- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE 1
第4页
实验名称:实验一 单链表的基本操作
实验目的
熟练掌握线性表两类存储结构的描述方法。
实验内容
从键盘读入若干个整数,建一个整数单链表,并完成下列操作:
(1)打印该链表;
(2)在链表中插入一个结点,结点的数据域从键盘读入,打印该链表;
(3)在链表中删除一个结点,被删结点的位置从键盘读入,打印该链表;
(4)在链表中做查找:从键盘读入要查找的整数,将该整数在链表中的位置打印出来,若要查找的整数不在链表中,返回一个信息。
算法设计分析
(一)数据结构的定义
单链表存储结构定义为:
struct Node;
typedef struct Node * pnode;
struct Node {
int info;
pnode link;
};
typedef struct Node * LinkList;
(二)总体设计
程序由主函数、创建单链表函数、链表长度函数、链表打印函数、插入正整数函数、删除函数、查询函数组成。其功能描述如下:
(1)主函数:调用各个函数以实现相应功能
int main(void) //主函数
{
printf(单链表的基本操作实验:\n);
struct list *pnode;
pnode = creat(); //创建
print(pnode); //输出
insert(pnode); //插入
print(pnode); //输出
_delete(pnode); //删除
print(pnode); //输出
_located(pnode); //查找
print(pnode); //输出
return 0 ;
}
(三)各函数的详细设计:
Function1: struct list *creat()//创建链表;
(1):申请表头节点空间
(2):输入-1结束输入;
(3):结点的数据域从键盘读入;
Function2:void print(struct list *pnode)//打印链表;
(1):利用while循环输出结点的数据域;
Function3:void insert(struct list *pnode)//插入;
(1):定义一个整型变量flag 记录当前指定插入的位置;
(2):利用if条件判断念输入的位置是否有效;//
If(position =0||positionlength(pnode))
//当输入的位置小于0或者大于链表的长度时,继续输入,直到输入到正确的值为止;
(3):申请一个结点空间(为即将插入的节点);
(4):用q-info 记录插入节点的数据域;
(5):用while(flag!=position)判断插入的位置;
(6):if(t == pnode-next) 判断插入的位置是否为单链表头结点的后面;如果是,直接用
q-next = pnode-next;
pnode-next = q;
return ;插入结点;
Function4:void _delete(struct list *pnode)//删除;
(1):用if(position=0||positionlength(pnode)) 判断输入删除的位置是否在允许的范围0或 点链表的总长度,则重新输入;
(2):while(flag!=positionp-next!=NULL) 找到需要删除的位置;
(3):找到要删除的结点后,把要删除的结点架空,即可删除该结点;
Fubction5:void _located(struct list *pnode)//查询位置上的数;
Function6:void _located(struct list *pnode)//查询数值所在表的位置;
(1):找到要查询数值的位置
while(flag!=number)
{
p=p-next;
flag=p-info;
position++;
}
(2):若未找到相关数值,则返回not found!
if(!p)
{
printf(not found);
}
实验测试结果及结果分析
测试结果
(二)结果分析
(1)单链表:1 2 3 4 5 6
(2)输入插入的位置为:9,显示无效插入位置
(3)重新输入插入位置3,输入插入值:7,则返回单链表,1 2 7 3 4 5 6
(4)输入删除的位置:8,显示无效删除位置
(5)从新输入删除位置:4;则返回单链表 1 2 7 4 5 6
(5)输入查询数值:3;则返回该数值在单链表中的位置:7
实验总结
通过本次的实验我对单链表有了更加深刻的了解
您可能关注的文档
- 第36讲-销售和收款循环的实质性程序.doc
- 员工工作态度培训课件.doc
- 信息经济学-考试题目-判断说明.docx
- 关于差旅费补贴标准的规定.docx
- 第5课用中国元素来设计教案设计.docx
- 第五章透镜和运用知识纲要.docx
- 物业工程安全管理培训(危险源与辨..ppt
- 安全培训课件——危险化学品基础知识.ppt
- 英语单词记忆方法技巧.pptx
- 工作票、操作票管理.doc
- 2025年8月 在全市防汛工作视频会议上的讲话.docx
- 在2025年市委常委班子集中整治问题整改工作专题会议上的讲话+党课:以过硬作风护航高质量发展以实干担当书写新时代“赶考”答卷.pdf
- 国有企业2025年在“贯彻党中央决策部署和国企改革要求方面、全面从严治党责任落实方面、基层党组织建设方面、巡察整改长效机制建设四个方面”巡察整改专题民主生活会存在的原因分析.docx
- 2篇 2025年在四届区委第十三轮巡察动员部署会议上的讲话.pdf
- 在理论学习中心组巡视整改专题学习研讨会议上的讲话+在省委巡视反馈问题整改部署会上的讲话+工作领导小组会议上的讲话.pdf
- 2篇 2025年在四届区委第十三轮巡察动员部署会议上的讲话.docx
- 2025年国企理论学习中心组巡视巡察专题民主生活会会前学习研讨+(2025年四个方面)巡察整改专题民主生活会个人发言提纲.docx
- 局党组、宣传部、纪委监委关于2025年上半年意识形态工作总结及2025年下半年工作打算.pdf
- 4篇 2025年在学习贯彻《中华人民共和国监察法实施条例》研讨交流会上的发言.pdf
- 在市委理论学习中心组中央城市工作会议精神专题学习研讨会上的发言.+关于传达中央城市工作会议精神的讲话提纲.docx
文档评论(0)