- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构习题解析与实训第三章
第
3
章 链式存储结构
链式存储结构是存放数据的另一种重要方式。通常将链式存储的线性表称为链表。
链式存储结构相对于顺序存储结构的最大的不同有两点,一是数据的逻辑结构和物理存
储位置相互独立,逻辑关系上相邻的元素物理位置上不一定是相邻的。二是数据元素所
需的存储空间可动态分配。
这一章的习题重点是单链表的各种建立算法及在单链表上的常见操作的程序实现。
单链表的数据结构如下所示。
#defineDATATYPE2char
typedefstructnode
{DATATYPE2data;
structnode*next;
}LINKLIST;
说明:单链表中元素结点的数据域为data,类型设定为字符,结点的指针域为next。
3.1
习题解析
【习题
1
】 建立单链表(1)
题目要求:将用户输入的数据按头插入法建立一个不带头结点的单链表。输入结点
数据时以输入一串字符的方式实现,$字符为结束输入字符。
【解答】
#include ″datastru.h″
#include stdio.h
#include malloc.h
intcount_nohead(LINKLIST*head){
/*不带头结点的单链表:输出单链表元素值并计数*/
l22
数据结构习题解析与实训
inti=0;
LINKLIST*p;
p=head;
printf(″输出单链表元素值:″);
while(p!=NULL)
{printf(″%c″,p-data);i++;p=p-next;}
printf(″\n″);
returni;
}
LINKLIST*creatlink_nohead_head(LINKLIST*head){
/*用头插入法建立不带头结点的单链表*/
LINKLIST*t;
charch;
printf(″单链表元素值为单个字符,连续输入,以$为结束字符:″);
while((ch=getchar())!=′$′)
{=(LINKLIST*)malloc(sizeof(LINKLIST));
t-data=ch;t-next=head;head=t;}
return(head);
}
main()
{INKLIST*head=NULL;
intnum;
printf(″\n建立单链表\n\n″);
head=creatlink_nohead_head(head);
fflush(stdin);
num=count_nohead(head);
printf(″单链表元素个数=%d\n″,num);
}
【习题
2
】 建立单链表(2)
题目要求:将用户输入的数据按头插入法建立一个带头结点的单链表。输入数据方
式同上题。
【解答】
#include ″datastru.h″
#include stdio.h
#include malloc.h
第3章 链式存储结构
l23
intcount_head(LINKLIST*head){
/*带头结点的单链表:输出单链表元素值并计数*/
inti=0;
LINKLIST*p;
p=head-next;
printf(″输出单链表元素值:″);
while(p!=NULL)
{printf(″%c″,p-data);i++;p=p-next;}
printf(″\n″);
returni;
}
LINKLIST*creatlink_head_head(LINKLIST*head){
/*用头插入法建立带头结点的单链表*/
LINKLIST*t;
charch;
t=(LINKLIST*)malloc(sizeof(LINKLIST));
head=t;t-next=NULL;
printf(″单链表元素值为单个字符,连续输入,$为结束字符:″);
while((ch=getchar())!=′$′)
{t=(LINKLIST*)malloc(sizeof(LINKLIST));
t-data=ch;t-next=head-next;head-next=t;}
return(head);
}
main()
{INKLIST*head=NULL;
intnum;
printf(″\n建立单链表\n\n″);
head=creatlink_head_head(head);
fflush(stdin);
num=count_head(head);
printf(″单链表元素个数=%d\n″,num);
}
【习题
3
】 建立单链表(3)
题目要求:将用户输入的数据按尾插入法建立一个不带头结点的单链表。输入数据
l24
数据结构习题解析与实训
方式同上题。
【解答】
#include″datastr
文档评论(0)