- 12
- 0
- 约2.59千字
- 约 7页
- 2018-10-17 发布于福建
- 举报
数据结构中链表创建的方法探究
数据结构中链表创建的方法探究
摘 要:链表是线性表的链式实现方式,是数据结构中的一个重要组成部分,而链表的创建方法直接影响人们对单链表的理解。经过对“数据结构”多年教学经验的积累,对链表的创建方法进行了归纳和总结,提出了相对容易理解的创建思路以及简明、易懂的创建方法。
关键词:数据结构线性表链表前插法尾插法
中图分类号:TP3 文献标识码:A 文章编号:1007-9416(2011)03-0105-02
线性表是数据结构结构中的重要组成部分。也是算法设计中应用最广泛的一种数据结构。线性表可以用链式存储来实现,链式存储指的是线性表中的逻辑相邻的元素存储位置可以不相邻。所以在链式存储结构中,每个结点除了保存元素信息以外,至少还需一个指针来保存直接后继的地址。链式存储结构表示线性表中的数据元素时首先要创建一个链表。
每个链表都由若干个离散的结点组成,这些结点在创建链表时总是逐个生成的,从而把这些生成的结点逐个地链接起来,形成链表。在此从结点的链接方式进行分析与归纳,以单链表为例对链表的创建方法总结为以下2种,即头插法和尾插法。
当然,在创建链表之前,需要自定义结点类型。用C语言,描述单链表结点如下:
typedef struct node
{ char data;
struct node *next;
}linklist;
1、头插法(表头插入法)
该方法从一个空表开始,重复读入数据,生成新结点,将读入数据存放到新结点的数据域中,然后将新结点插入当前链表的表头上,直至读入结束标志为止。图1指明:在空链表head中依次插入a,b,c之后,将d插入当前链表表头时指针的修改情况。具体算法如下:
linklist *CreatF()/*逐个输入字符,以“$”为结束符,返回单链表头指针*/
{ char ch;linklist *head,*s;
head=NULL; ch=getchar();/*读入第一个结点的值*/
while(ch!=$)
{ s=(linklist*)malloc(sizeof(linklist)); /*生成新结点*/
s-data=ch; /*将输入数据放入新结点的数据域中*/
s-next=head;
head=s; /*将新结点插入到表头上*/
ch=getchar(); /*读入下一个结点的值*/
}return head; /*返回表头指针*/
}
2、尾插法(表尾插入法)
头插法建立单链表虽然算法简单,但生成的链表中结点的次序和输入的顺序相反。若希望二者次序一致,可采用尾插法建立单链表。该方法是将新结点插到当前链表的表尾上,为此必须增加一个尾指针r,使其始终指向当前链表的尾结点。例如,在空链表head中插入a,b,c之后,将d插入当前链表的表尾,其指针修改情况如图2所示。
以下通过代码来实现尾插法创建方法:
linklist *CreatR() /*尾插法建立单链表,返回表头指针*/
{ char ch;
linklist *head,*s,*r;
head=NULL; r=NULL;ch=getchar();
while(ch!=$)
{ s=(linklist*)malloc(sizeof(linklist));
s-data=ch;
if(head==NULL) head=s; /*新结点*s插入空表*/
elser-next=s; /*非空表,新结点*s插入到尾结点*r之后*/
r=s; /*将尾指针r指向新的表尾*/
ch=getchar();/*读入下一个结点的值*/
}
if(r!=NULL)r-next=NULL; /*对于非空表,将尾结点的指针域置空*/
return head; /*返回表头指针*/
}
在上述算法中,在表头的插入操作和链表中其他位置上的插入操作处理是不一样的,我们必须对第一个位置上的插入操作做特殊处理,为此上述算法使用了第一个if语句。算法中第二个if语句的作用是为了分别处理空表和非空表这两种不同的情况。如果我们在链表的开始结点之前附加一个结点,并称它为头结点,那么就会解决这两个if语句的问题,使尾插法建立单链表的算法更加简单。
带头结点的单链表如图3所示,图中阴影部分表示头结点的数据域不存储信息,但是在有的应用中,可利用该域来存放表的长度等附加信息。
引入头结点后,尾插法建立单链表的算法可简化为:
linklist *CreatR1()
{ char ch;
l
您可能关注的文档
最近下载
- 《数字营销战略整合》课件.ppt VIP
- 学校“十五五”发展规划及2035远景目标.docx
- 考虑用户满意度的智慧停车多目标调度算法.pdf VIP
- 步步高物理必修2人教答案解析.docx VIP
- 2025年江苏旅游职业学院单招(计算机)测试备考题库附答案.docx VIP
- 中国商贸文化-专题四 商帮-1729733792248.pptx VIP
- 2024年江西生物科技职业学院单招职业适应性测试试题库带答案(能力提升).docx VIP
- 2025年中国科技大学创新班入围考试数学试卷真题(答案解析).docx VIP
- 2025年房地产经纪人租赁合同中装修添附物的违约责任处理专题试卷及解析.pdf VIP
- 努力实现“十五五”发展目标及2035年远景目标.docx VIP
原创力文档

文档评论(0)