链表主要就单链表、循环链表和双向链表3种链表进行讨论。
一、单链表
概念:所谓单链表,是指数据结点是单向排列的。一个单链表结点,其结构类型分为两部分:
(1)数据域:用于存储数据元素的值。
(2)指针域(链域):用于存储下一个结点地址或者说指向其直接后继结点的指针。
算法:
一般声明3个指针来操作链表:
head:用来指向链表的头部。链表需要一个指针来标识链表,这就是头指针。
p1:用来指向新结点,以及用来遍历链表的每一个结点。
p2:用来指向当前结点。
(1)单链表创建算法
创建结点数目为n的链表:
#include
typedefstructnode
{
intnum;//数值域structnode *next;//指针域}stud;
stud* Create(intn)
{
stud *head,*p1,*p2;
head=p1=p2=NULL;
for(inti=0;i
{
p1=(stud*)malloc(sizeof(stud));
p1