




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验1 ADT表的编程与实现C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序员中备受青睐。Microsoft Visual C+是Microsoft公司推出的开发Win32环境程序具有集成开发环境,可提供编辑C语言,C+以及C+/CLI语言等可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。 本课程实验要求学生运用C语言编程完成数据结构课程中抽象数据类型及排序算法的编程实现,加深对教学内容的理解。实验目的:加深对抽象数据类型ADT表的理解;实验原理:参照课本p.44-49,及Figure3.6-3.13.实验内容:编写程序实现ADT表的定义,及常用操作:1) 判断表是否为空;2) 获取第i个节点的内容3) 删除4) 插入实验要求:1)复习C语言相关知识;2)实现完整的ADT表结构及操作,并给出应用。实验源程序: #include stdafx.h #include stdio.h #include stdlib.h #include malloc.htypedef struct node int data; struct node *pNext; /pNext为指向下一个节点的指针Node,*pNode; pNode CreateLinkList(); /创建链表函数bool IsEmpty(pNode); /定义IsEmpty(pNode)为布尔值,判断链表是否为空int FindTheNode(pNode pHead,int a,int length); /找出某一个节点的值void TraverseLinkList(pNode pHead); /遍历链表,获取链表中的数值int GetLengthLinklist(pNode pHead); /获取链表长度int Delete(pNode pHead,int x) ; /删除元素int Insert(pNode pHead,int b,int c); /插入元素void FreeLinkList(pNode pHead); /释放链表空间/int main() /主函数 int a,b,c,x,length; pNode pHead = NULL; /初始化头节点pHead为NULL pHead = CreateLinkList(); / 创建一个非循环单链表,并将该链表的头结点的地址赋给pHead if (IsEmpty(pHead) / 判断链表是否为空 printf (链表为空!n); return 0;else TraverseLinkList(pHead); /遍历链表 printf (链表为非空!n); length=GetLengthLinklist(pHead); /获取链表长度while(1) printf(获取第i个节点的内容,i=); scanf(%d,&a);if(FindTheNode(pHead,a,length)break; /找出第i个节点的值while(1) printf(请输入要删除的元素:); scanf(%d,&x); if(Delete(pHead,x) /在链表中将元素x删除 printf(删除元素%d后,x);break; printf(未找到该元素,删除失败n); TraverseLinkList(pHead);while(1) printf(请输入插入节点的位置:); scanf(%d,&b); printf(请输入插入节点的数值:); scanf(%d,&c);if(Insert(pHead,b,c) /在链表中插入元素 printf(在位置%d插入元素%d后,b,c);break; printf(未找到该位置,插入失败n);TraverseLinkList(pHead);FreeLinkList(pHead); /释放链表空间 return 0; /pNode CreateLinkList() /创建链表函数 int LEN,a; pNode pHead = (pNode)malloc(sizeof(Node); /动态分配内存 pNode pTail = pHead; pTail-pNext = NULL; /令链尾指向NULL printf(请输入创建的单向链表的节点个数:); scanf(%d,&LEN); for(int i = 0; i data = a; pTail-pNext = pNew; /pTail中的指针pNext指向pNew pNew-pNext = NULL; pTail = pNew; /新建的节点变为链尾 return pHead; /bool IsEmpty(pNode pHead) / 判断列表是否为空 return pHead-pNext=NULL; /int FindTheNode(pNode pHead,int a,int length) /找出某一个节点的值 if(alength) /判断要查找的节点位置是否正确 printf(链表中没有此节点n);return 0;else pNode p = pHead-pNext; for(int i = 0; i data);/当找到该节点时输出它的值 p = p-pNext; printf(n); return 1; /void TraverseLinkList(pNode pHead) /遍历链表,获取链表中的数值 printf(链表中各节点的值依次为:); pNode p = pHead-pNext; while(p!=NULL) /知道最后一个节点循环才停止 printf(%d ,p-data); p = p-pNext; printf(n); /int GetLengthLinklist(pNode pHead) /获取链表长度 int length=0; pNode p=pHead-pNext; while(p!=NULL) length+; p = p-pNext; return length;/int Delete(pNode pHead,int x) /删除元素 pNode p,q; q=p=pHead; p=p-pNext; /p指向头结点后第一个元素while(p) if(p-data=x) /找到要删除的元素 q-pNext=p-pNext; free(p); /释放该元素所在节点的空间 return 1; else q=p; /q始终指向p上一个节点 p=p-pNext; return 0; /int Insert(pNode pHead,int b,int c) /插入元素 pNode p,q; q=p=pHead; p=p-pNext; if(b0 & bi;i+) q=p; /q始终指向p上一个节点 p=p-pNext; pNode pNew = (pNode)malloc(sizeof(Node); /创建新节点并动态分配内存 pNew-data=c; pNew-pNext=p; q-pNext=pNew; return 1;else return 0;/ void FreeLinkList(pNode pHead) /释放链表空间 pNode p,q ; p=pHead-pNext; while (p != NULL) q=p-pNext; free(p); /释放各节点的空间 p=q; pHead-pNext=NULL; 实验结果:1)判断表是否为空创建链表,链表不为空。 链表为空。 2)获取第i个节点的内容输入要求获取的节点内容的位置正确,比如i=2,则得到第2个节点的内容为22。 输入要求获取的节点内容的位置不在链表中,比如i=8,则显示链表中没有此节点。 若输入节点位置不在链表中,则需继续输入正确位置,不然系统会一直要求输入节点i的值直到我们输入正确的节点位置。 3)删除输入要删除的元素在链表中,比如删除元素44,则链表中剩下的元素有11、22、33、55、66. 若输入要删除的元素不在链表中,比如要删除元素77,则显示未找到该元素,删除失败。 若输入要删除的元素不在链表中,则需继续输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 主播劳动合同样本
- 丽水重型吊车租赁合同样本
- 东呈酒店劳务合同样本
- 离婚法律协议离婚程序二零二五年
- 二零二五版员工廉政廉洁自律手册承诺书
- 2007购房合同标准文本
- 青蓝工程培养计划书
- 微商营销方案三篇
- 二零二五版环境保护管理协议模板
- 办公厂房无偿出租协议
- 甘肃省卫生健康委公务员考试招聘112人往年题考
- 数字化赋能护理质量管理研究进展与价值共创视角
- 冲压模具设计与制造工艺考试复习题库(含答案)
- 2025牡丹江辅警考试题库
- 2024年新高考广西高考生物真题试卷及答案
- 2024-2025学年北师大版七年级数学下册期中模拟卷
- 2025部编人教版小学二年级语文下册全册教案
- 电网工程设备材料信息参考价(2024年第四季度)
- 电子产品生产工艺流程手册
- 预防艾滋病、梅毒、乙肝母婴传播实验室检测
- pep小学英语四年级下课文及翻译
评论
0/150
提交评论