1、链式存储,可以简称链表。
2、链表的一个结点(node)由两部分组成:数据域和指针域。
3、整个链表的存取必须从头指针开始,链表最后一个结点的指针为空,因此它是非随机存取的数据结构。
4、链表中插入结点:假设原结点为p,新结点为s,则:
s->next = p->next;
p->next = s;
不是很难理解吧……
5、基本操作还是比较简单的,下面假定采用无“空头”模式的如下链表:
#define INVALID 0xffff[......]
1、链式存储,可以简称链表。
2、链表的一个结点(node)由两部分组成:数据域和指针域。
3、整个链表的存取必须从头指针开始,链表最后一个结点的指针为空,因此它是非随机存取的数据结构。
4、链表中插入结点:假设原结点为p,新结点为s,则:
s->next = p->next;
p->next = s;
不是很难理解吧……
5、基本操作还是比较简单的,下面假定采用无“空头”模式的如下链表:
#define INVALID 0xffff[......]
#include
typedef struct node
{
int num;
struct node *next;
}*LINK,NODE;
/*
这个函数用来创建有重复节点的单链表,
简单起见,每个节点的num成员变量按照节创建先后顺序付值,依次为
1,2,3...
第一个int n参数是要创建的总结点个数
第二个参数n1是第几个哪个节点与前面的节点的num成员变量相同
例如调用link_cr(5,2),则产生的节点如下:
NODE 1 num 1
NODE 2 num 2[......]
#include
typedef struct node
{
int num;
struct node *next;
}*LINK,NODE;
LINK link_rev(LINK head);
LINK link_cr(int num);
void link_show(LINK head);
int main()
{
LINK *p,head,head1;
head=link_cr(5);
printf("Now create 5 NODE LINK,print:");[......]
#include
typedef struct phone
{
long num;
char name[20];
struct phone *next;
} PHONE,*LINK;
LINK crate(int num);
void print(LINK head);
LINK insert(int pos,long num,char *name,LINK head);
LINK del(int pos,LINK head);
void find(long num,LINK[......]