互联网

「C语言基础知识」单链表的创建与读取(含完整代码及详细注释)

作者: 来源:东方头条2019-11-29 11:43:54 我要评论(0)

学无止境,每当我们接触了新的领域就会发现原来自己要学习的还那么多……

这不,小编最近迷上了C语言,但是学习起来也颇为吃力,用了三天时间终于弄懂了单链表的创建与读取,个中滋味实属不易!正所谓"书山有路勤为径,学海无涯苦作舟",不过豁然开朗的那一刻,小编觉得值了,那种快乐是热爱学习的人才能体会的,不知大家有没有同感。好吧,感慨就发到这里,下面小编就给大家分享一段单链表创建与读取的完整代码吧(当然,也包括小编的完整注释),感兴趣的童鞋一起来探讨吧。

该程序用来实现从键盘读取整形数并存入单链表相应结点,0为结束标志。最后再一次读取链表结点数据并输出。

创建一个单链表步骤如下:

· 定义一个单链表;

· 创建一个空的单链表;

· 依次从键盘读入数据链入单链表的表尾。

分析:在程序中使用一个单链表只需定义一个指向头结点的指针,该指针被命名为head。空的单链表是一个只有头结点的单链表。创建一个空的单链表需要申请一个结点,该结点的数据字段不存储有效数据,next指针为空指针,让head指向该结点。依次从键盘读入数据链入单链表的表尾,可由一个循环组成。该循环的每一个循环周期从键盘读入一个整型数,如果读入的不是0,则申请一个结点,将读入的数放入该结点,将结点链到链表的表尾。如果读入的数是0,设置最后一个结点的next为NULL,链表创建完成。为了节省插入时间,我们用一个指针指向链表的最后一个结点。在链表的访问中,我们先用一个指针指向链表的第一个结点看看结点是否存在,如果存在则访问该结点,并让指针指向下一结点;如果不存在则结束访问。

程序代码如下:

#include

#include

struct linkRec{

int data;

struct linkRec *next;

};//定义单链表

int main()

{

int x;//存放从键盘输入的值

struct linkRec *head,*p,*rear;//定义结构体类型的指针,用于指向头结点、当前结点及尾结点

head=rear=(struct linkRec *)malloc(sizeof(struct linkRec));//创建一个空链表(头结点)

//创建链表的其它结点

while(1)

{

scanf("%d",&x);

if(x==0) break;

p=(struct linkRec *)malloc(sizeof(struct linkRec));//申请一个新结点

p->data=x;//将x的值存入新的结点

rear->next=p;//新结点链到头结点(即初始时的尾结点)的下一结点

rear=p;//p结点作为新的表尾

}

rear->next=NULL;//设置rear尾表尾,其后没有结点了

//读取链表

printf("链表的内容为:\n");

p=head->next;//p指向第一个结点

while(p!=NULL)

{

printf("%d\t",p->data);

p=p->next;//读取数据后使p指向下一个结点

}

printf("\n");

system("pause");//为了观察效果,暂停执行

return 0;

}

好了,下面我们运行一下试试效果。

生成解决方案按成功:

从键盘读取数据并插入链表:

访问链表:

OK!程序运行成功,达到预期效果,你Get到没有。

篇幅有限,不详之处请留言。

文章为小编纯手码,仅供交流学习之用,不足之处敬请批评指正。如果你觉得本文对你有帮助请给我点赞并转发给更多的人!

注释 基础知识 读取 链表 创建

南方时尚网遵循行业规范,任何转载的稿件都会明确标注作者和来源;南方时尚网的原创文章,请转载时务必注明文章作者和"来源:南方时尚网",不尊重原创的行为南方时尚网或将追究责任。

网友点评