- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言单向链表的实现
分类: C基础 2004-10-30 16:30 1322人阅读 评论(0) 收藏 举报
一个简单结点的结构体表示为:
??? struct note
??? {
?????? int? data;????????????? /*数据成员可以是多个不同类型的数据*/
?????? struct? note? *next;????? /*指针变量成员只能是-个*/
??? };
?
一个简单的单向链表的图示
?
1.链表是结构、指针相结合的-种应用,它是由头、中间、尾多个链环组成的单方向可伸缩的链表,链表上的链环我们称之为结点。
2.每个结点的数据可用-个结构体表示,该结构体由两部分成员组成:数据成员与结构指针变量成员。
3.数据成员存放用户所需数据,而结构指针变量成员则用来连接(指向)下-个结点,由于每-个结构指针变量成员都指向相同的结构体,所以该指针变量称为结构指针变量。
4.链表的长度是动态的,当需要建立-个结点,就向系统申请动态分配-个存储空间,如此不断地有新结点产生,直到结构指针变量指向为空(NULL)。申请动态分配-个存储空间的表示形式为:
?????????? (struct? note*)malloc(sizeof(struct? note))
?
链表的建立
?? 在链表建立过程中,首先要建立第一个结点,然后不断地
在其尾部增加新结点,直到不需再有新结点,即尾指针指向
NULL为止。
设有结构指针变量?? struct note *p,*p1,*head;
????? head:用来标志链表头;
p:在链表建立过程中,p总是不断先接受系统动态分配的新结点地址。
p1-next:存储新结点的地址。
?
链表建立的步骤:
第一步:建立第一个结点
struct?? node
{
??? int?? data;
??? struct?? node? *next;
?};
struct?? note?? *p,*p1,*head;
head=p1=p=(struct? node? *)malloc(sizeof(struct node);
?
第二步:
????? 给第-个结点成员data赋值并产生第二个结点
scanf(“%d”,p-data); /*输入10*/
p=(struct? node? *)malloc(sizeof(struct node);
?
第三步:将第-个结点与第二个结点连接起来
p1- next=p;
?
第四步:产生第三个结点
p1=p;
scanf(“%d”,p-data);/*输入8*/
p=(struct? node? *)malloc(sizeof(struct node);
以后步骤都是重复第三、四步,直到给出-个结束条件,不再建新的结点时,要有
?? p-next=NULL;它表示尾结点。
?
?
代码
[cpp] view plaincopyprint?
#include?stdio.h ??
#includestdlib.h ??
#define??LEN??sizeof(struct?node) ??
struct?node??
{??
int?data;??
struct?node??*next;??
};??
main()??
{?????struct??node??*p,?*pl,*?head;??
??????????head=p=(struct?node?*?)malloc(LEN);??
??????????scanf(%d,p-data);/*头结点的数据成员*/??
??????????while(p-data!=0)???/*给出0结束条件,退出循环*/??
??????????{????pl=p;??
???????????????p=(struct?node?*?)malloc(LEN);??
??????????????????scanf(%d,p-data);/*中间结点数据成员*/??
??????????????????pl-next=p;/*中间结点的指针成员值*/??
??????????}??
??????????p-?next=NULL;/*尾结点的指针成员值*/??
??????????p=head;/*链表显示*/??
??????????printf(链表数据成员是:);??
??????????while(p-next!=NULL)??
??????????{??
??????????printf(%d,p-data);??
??????????p=p-next;??
??????????}??
??????????printf(%d\n,p-data);??
}??
您可能关注的文档
最近下载
- 做香囊(课件)-三年级上册劳动.pptx VIP
- 新思路大学英语基础教程第一册.docx VIP
- 2025年新疆阿勒泰地区布尔津县高校毕业生“三支一扶”计划招募11人笔试模拟试题及答案解析.docx VIP
- 2025年【合成氨工艺】考题(含答案) .docx VIP
- 重庆市人民小学四年级数学竞赛试卷及答案_学科竞赛.pdf VIP
- PC(装配式)结构施工监理实施细则.doc VIP
- 民警心理健康辅导课件.pptx VIP
- 考古与文物 讲座7-2元、明、清时期的瓷器.ppt VIP
- 考古与文物 讲座6-3中国古代青铜器的作伪与辨伪.ppt VIP
- 期末综合题训练-统编版七年级下册历史(含答案).docx VIP
文档评论(0)