1.结构体的基本特点:(结构体中可以嵌套一个别的结构体; ..........可以嵌套一个别的结构体指针) (结构体中不可以嵌套一个自身类型的结构体(原因:确定不了结构体的内存大小); ..........可以嵌套一个指向自身类型的指针(原因:不同类型的指针在同一操作平台下所占内存相同,有确定值) ...
分类:
编程语言 时间:
2016-07-04 18:22:34
阅读次数:
139
我们都知道,单向链表最后指向为NULL,也就是为空,那单向循环链表就是不指向为NULL了,指向头节点,所以下面这个程序运行结果就是,你将会看到遍历链表的时候就是一个死循环,因为它不指向为NULL,也是周而复始的执行。串成了一个环型。 #include
#include
typedef struct node
{
char name[20];
struct node *link;
}...
分类:
编程语言 时间:
2016-06-28 13:03:10
阅读次数:
241
反转链表 注意是借用 假的头节点,这样算法判断开始和结束,就好很多了. 借用头插法. []dummy/head [] [] [] [] head curr ...
分类:
其他好文 时间:
2016-06-22 14:08:58
阅读次数:
128
1、编程实现单链表删除节点。 解析:如果删除的是头节点,如下图: 则把head指针指向头节点的下一个节点。同时free p1,如下图所示: 如果删除的是中间节点,如下图所示: 则用p2的next指向p1的next同时,free p1 ,如下图所示: 2、编写程序实现单链表的插入。 解析:单链表的插入 ...
分类:
编程语言 时间:
2016-06-07 13:01:40
阅读次数:
305
La、Lb线性链表升序排列,将结果放在Lc链表里。之前有文章写过两个有序链表的合并 区别在于,前面的做法是保留La的头节点,free掉Lb的头节点,将余下节点串起来。这种方法是面向过程编程 而现在讨论的做法,是单独建立一个Lc链表,利用一些已经写好的基本操作函数来完成,这种模块化编程做法实际上还简单 ...
分类:
其他好文 时间:
2016-06-03 01:15:18
阅读次数:
190
约瑟夫问题的提法:n个人围成一个圆圈,首先第1个人从1开始,一个人一个人的顺时针报数,报到第m个人,令其出列;然后再从下一个人开始,从1顺时针报数,报到第m个人,再令其出列,…,如此下去,直到圆圈中只剩一个人为止,此人即为优胜者。 例如 n = 8 m = 3 该问题老师让我们在带头节点的单循环链表 ...
分类:
其他好文 时间:
2016-05-18 10:21:21
阅读次数:
231
// 1.头、尾节点位置
// 2.链表
// 元素数量
#include
#include
#include
#include
//链表节点信息:
//
// 1.数据域
// 2.指针域
#define TRUE (1)
#define FALSE (0)
#define ZERO (0)
#define...
分类:
编程语言 时间:
2016-05-13 00:21:56
阅读次数:
309
一般有两种常用的方法来建立单链表:头插法与尾插法。
(1)头插法:每次将新申请的节点插在头节点的后面;
简单来说,就是把新加进的元素放在表头后的第一个位置:
首先,让新节点的next指向头节点之后;然后,让表头的next指向新节点。
(2)尾插法:每次将新申请的节点插在终端节点的后面。#include
#include typedef struct n...
分类:
编程语言 时间:
2016-05-12 21:10:43
阅读次数:
215
题目:输入一个链表的头节点,从头到尾反过来打印出每个节点的值
Reverse()函数:输入头结点,可输出的确是从尾到头;即第一个输入的节点,最后一个输出;最后一个输入的结点,第一个输出;很典型的“后进先出“;用桟实现;
1、将结点放进桟中,当结点全遍历一遍时,链表已经反过来,
2、此时再从桟顶逐个输出结点的值
Reverse2()函数:递归本质就是桟结构;则用_Reverse2(_...
分类:
其他好文 时间:
2016-05-12 18:40:26
阅读次数:
128
问题描述:给定两个链表的头指针,并且这两个链表都已经有顺序了,将这两个链表合并成一个链表,并且使合并后的链表依然有序。 分析:这个问题有点类似于归并排序中的归并步骤。具体思想如下: 首先比较两个链表的头结点,并将较小的作为合并后链表的头节点,然后移动指针,再比较两个指针的节点,以此类推, 如果其中一 ...
分类:
编程语言 时间:
2016-05-11 19:40:19
阅读次数:
177