版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、and research; notForpersonaluseonlyinstudyforcommercialuse初实验1ADT表的编程与实现莆C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序员中备受青睐。MicrosoftVisualC+隹Microsoft公司推出的开发Win32环境程序具有集成开发环境,可提供编辑C语言,C+©及C+/CLI语言等可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生
2、成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。芃本课程实验要求学生运用C语言编程完成数据结构课程中抽象数据类型及排序算法的编程实现,加深对教学内容的理解。蟹要妨实验目的:加深对抽象数据类型ADT表的理解;蜜实验原理:参照课本p.44-49,及Figure3.6-3.13.蝇实验内容:编写程序实现ADT表的定义,及常用操作:1)2)菜判断表是否为空;3)4)索获取第i个节点的内容5)6)蕨删除7)8) 蒈插入薅实验要求:1)复习C语言相关知识;膂2)实现完整的ADT表结构及操作,并给出应用。芾实验源程序:蛔#include"stdafx.h蒲#include&
3、quot;stdio.h"蚂#include"stdlib.h方#include"malloc.h螅typedefstructnode肄腿intdata;聿structnode*pNext;/pNext为指向下一个节点的指针袅Node,*pNode;菜pNodeCreateLinkList();/袁boolIsEmpty(pNode);/WintFindTheNode(pNodepHead,inta,intlength);nvoidTraverseLinkList(pNodepHead);/袅intGetLengthLinklist(pNodepHead);/箴i
4、ntDelete(pNodepHead,intx);/木勺intInsert(pNodepHead,intb,intc);/BvoidFreeLinkList(pNodepHead);/创建链表函数定义IsEmpty(pNode)为布尔值,判断链表是否为空/找出某一个节点的值遍历链表,获取链表中的数值获取链表长度删除元素插入元素释放链表空间辐/屋intmain()虿inta,b,c,x,length;/主函数BpNodepHead=NULL;/初始化头节点pHead为NULL希pHead=CreateLinkList();/创建一个非循环单链表,并将该链表的头结点的地址赋给pHead螃if(I
5、sEmpty(pHead)芨艘printf("链表为空!n");簿return0;赚腿else芄TraverseLinkList(pHead);瞧printf("链表为非空!n");籍length=GetLengthLinklist(pHead);膀while(1)黄节printf("获取第i个节点的内容,筮scanf("%d",&a);量if(FindTheNode(pHead,a,length)break;蒄董while(1)肃螈printf("请输入要删除的元素:");螈scanf(&quo
6、t;%d",&x);肄if(Delete(pHead,x)/判断链表是否为空/遍历链表/获取链表长度i=");/找出第i个节点的值/在链表中将元素x删除薄printf("删除元素d后",x);break;腿printf("未找到该元素,删除失败n");袈TraverseLinkList(pHead);蒄while(1)节覆printf("请输入插入节点的位置:");ascanf("%d",&b);袅printf("请输入插入节点的数值:");蛰scanf(&q
7、uot;%d",&c);芈if(Insert(pHead,b,c)/在链表中插入元素肇printf("在位置插入元素%d/W",b,c);break;建printf("未找到该位置,插入失败n");蒂TraverseLinkList(pHead);肇FreeLinkList(pHead);/释放链表空间胭return0;蒙/木勺pNodeCreateLinkList()/创建链表函数膀intLEN,a;芾pNodepHead=(pNode)malloc(sizeof(Node);/动态分配内存袄pNodepTail=pHead;蔽pTa
8、il->pNext=NULL;/令链尾指向NULL衿printf("请输入创建的单向链表的节点个数:");芾scanf("%d",&LEN);芍for(inti=0;i<LEN;i+)聿妍printf("请输入第d节点的数值:",i+1);勘scanf("%d",&a);前pNodepNew=(pNode)malloc(sizeof(Node);螂pNew->data=a;蒇pTail->pNext=pNew;蒇pNew->pNext=NULL;螃pTail=pNew;
9、艿蔓returnpHead;薇膈/羁boolIsEmpty(pNodepHead)芈蜗returnpHead->pNext=NULL;薄箴/赣intFindTheNode(pNodepHead,inta,intlength)蟆/创建新节点/pTail中的指针pNext指向pNew/新建的节点变为链尾/判断列表是否为空/找出某一个节点的值箍if(a>length)/判断要查找的节点位置是否正确»printf("链表中没有此节点n");return0;膂else裂pNodep=pHead->pNext;蝇for(inti=0;i<a;i+)袆i
10、f(i=a-1)printf("第d节点的内容是:d",a,p->data);/当找到该节点时输出它的值p=p->pNext;printf("n");return1;莅/透voidTraverseLinkList(pNodepHead)/遍历链表,获取链表中的数值滕printf("链表中各节点的值依次为:");蒂pNodep=pHead->pNext;膂while(p!=NULL)/知道最后一个节点循环才停止膈printf("%d",p->data);黄p=p->pNext;蚀prin
11、tf("n");w莆/ 获取链表长度芃intGetLengthLinklist(pNodepHead)刘辑intlength=0;荽pNodep=pHead->pNext;蚄while(p!=NULL)slength+;蝇p=p->pNext;菜Breturnlength;蔽蒈/ 删除元素薅intDelete(pNodepHead,intx)膂辑pNodep,q;芾q=p=pHead;/p 指向头结点后第一个元素蛔p=p->pNext;蒲while(p)蚂方if(p->data=x)/找到要删除的元素螅肄q->pNext=p->pNext
12、;腿free(p);聿return1;袅菜else袁q=p;Wp=p->pNext;箍袅return0;菽未勺/BintInsert(pNodepHead,intb,intc)辐屋pNodep,q;虿q=p=pHead;Bp=p->pNext;蒂if(b>0&&b<GetLengthLinklist(pHead)+2)螃芨for(inti=1;b>i;i+)/释放该元素所在节点的空间/q始终指向p上一个节点/插入元素/判断要求插入元素的位置是否正确月n蝴q=p;/q始终指向p上一个节点赚p=p->pNext;腿芄pNodepNew=(pNod
13、e)malloc(sizeof(Node);/创建新节点并动态分配内存瞧pNew->data=c;籍pNew->pNext=p;膀q->pNext=pNew;英return1;节筮elsereturn0;量蒄/董voidFreeLinkList(pNodepHead)/释放链表空间肃pNodep,q;螈p=pHead->pNext;螈while(p!=NULL)肄q=p->pNext;薄free(p);/释放各节点的空间腿p=q;袈pHead->pNext=NULL;蒄踊实验结果:袅1)判断表是否为空蜜创建链表,链表不为空。肇链表为空。肇2)获取第i个节点的
14、内容腿输入要求获取的节点内容的位置正确,比如i=2,则得到第2个节点的内容为22。-633于于于乎.MJ 口需否苦用 工P4p4 H翦青Lwff盾Lws12 3 4 5 6 122膀输入要求获取的节点内容的位置不在链表中,比如i=8 ,则显示链表中没有此节点。串MBRe质弟省玉 <X=A=Ai廿 It袄蔽若输入节点位置不在链表中,则需继续输入正确位置,不然系统会一直要求输入衿节点i的值直到我们输入正确的节点位置。CIS直,a雳S覆覆覆爱日入A-.A,<,、3£/中占苫苫苫苫占2 卫2;卫 NF4T聿3)删除研输入要删除的元素在链表中,比如删除元素44,则链表中剩下的元素有11、勘22、33、55、66.6665同112233嚣笺口苫苫苫苫品 一卫卫卫卫卫理wwwflw螂若输入要删除的元素不在链表中,比如要删除元素77,则显示未找到该元素,藏删除失败。:22:33:44:55:S6M.B.B.B.hn.fisa为:11 2? 33 44 55 6S百 百音一藏螃若输入要删除的元素不在链表中,则需继续输入在链表中的元素,不然系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年高科技辅助下的《将进酒》课件设计
- 《接触网施工》课件 3.1.1 软横跨测量计算
- 《理想的翅膀》课件:2024年助力脱贫攻坚战
- 2024年视角下的《炉中煤》课件教学策略优化
- 2024年多媒体课件制作:提升教学效果的关键因素
- 《雪花和雨滴的舞蹈》
- 2024年《民航概论》教案编写中的教学方法探索
- 2024年教学课件:《阿房宫赋》创新教学
- 新基建引领产业互联网发展新基建、新要素、新服务、新生态
- 2024年广告学教程教案:聚焦创意与策略的完美结合
- 3.15 秦汉时期的科技与文化 课件 2024-2025学年七年级历史上学期
- 特种玻璃课件
- 基于创新能力培养的初中物理跨学科实践教学策略
- Unit 2 This is my pencil. Lesson 10(教学设计)-2024-2025学年人教精通版英语三年级上册
- 新版高血压病人的护理培训课件
- 医院等级创建工作汇报
- 2024年江西省公务员录用考试《行测》题(网友回忆版)(题目及答案解析)
- VDA6.3基础培训考核测试卷附答案
- 第01讲 正数和负数、有理数-人教版新七年级《数学》暑假自学提升讲义(解析版)
- 信息系统部署与运维-题库带答案
- 婚姻心理学解读包含内容
评论
0/150
提交评论