




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验1 ADT表的编程与实现电工二姓名:张德良学号:201400121076实验目的:加深对抽象数据类型ADT表的理解;实验原理:参照课本p.44-49,及Figure3.6-3.13.实验内容:编写程序实现ADT表的定义,及常用操作:1)、判断表是否为空;源程序#include stdafx.h#include stdio.h#include stdlib.h#include malloc.h/ 定义链表中的节点typedef struct node int member; / 节点中的元素 struct node *pNext; / 指向下一个节点的指针Node,*pNode;/ 函数声明pNode CreateList(); / 创建链表函数void TraverseList(pNode ); / 遍历链表函数bool Is_Empty(pNode); / 判断链表是否为空int main()pNode pHead = NULL; / 定义初始化头节点 struct Node *pHead = NULL int flag; / 存放链表是否为空的标志, int Len; pHead = CreateList(); / 创建一个非循环单链表,并将该链表的头结点的地址付给pHead TraverseList(pHead); / 调用遍历链表函数 if (Is_Empty(pHead) = true) / 判断列表是否为空 return 0; return 0;/ 创建链表函数pNode CreateList() int i; int len; int val; pNode pHead = (pNode)malloc(sizeof(Node); pNode pTail = pHead; pTail-pNext = NULL; printf(请输入节点个数:); scanf(%d,&len); for(i = 0; i member = val; pTail-pNext = pNew; pNew-pNext = NULL; pTail = pNew; return pHead; / 遍历链表函数void TraverseList(pNode pHead) pNode p = pHead-pNext; while(NULL != p) printf(%d ,p-member); p = p-pNext; printf(n); return ;/ 判断链表是否为空bool Is_Empty(pNode pHead) if (NULL = pHead-pNext) printf (链表为空!n); return true; else return false; 运行结果输入节点个数及各节点数值如下2)获取第i个节点的内容源程序#include stdafx.h#include stdio.h#include stdlib.h#include malloc.h#define maxsize 50typedef structint datamaxsize;int last;Sequenlist;Sequenlist * InitList () /创建顺序表Sequenlist * L ;L= (Sequenlist *) malloc( sizeof(Sequenlist) );L-last =0;return(L);Sequenlist * creat() /创建一个有具体内容的顺序表Sequenlist * L; int i=1,n;L=InitList( );printf(请输入数据,以0结束n);scanf(%d,&n);while(n!=0 & L-lastdatai=n;i=i+; L-last+;scanf(%d,&n);return(L);int GetData (Sequenlist * L, int i ) /获取第i个元素if ( i =1 & i last)return (L-datai);elseprintf (参数 i 不合理!n);return 0;void main()int length,i;int value,number,location;int j,k;int flag;Sequenlist * L ;L=creat();printf(Please input the locationn);scanf(%d,&location);value=GetData(L,location);printf(The number is %dn,value);运行程序依次输入链表元素的值,以0结束输入要查找元素的位置3)链表删除元素源程序#include stdafx.h#include stdio.h#include stdlib.h#include malloc.htypedef int ElemType;typedef void Status;typedef struct NodeElemType data;struct Node *next;LNode, *LinkList;Status CreatList(int ,LinkList );Status Traverse(LinkList );Status FreeList(LinkList );ElemType DelElem(LinkList ,ElemType );int main()int Length;ElemType e;LinkList L;L=(LinkList)malloc(sizeof(LNode);L-next=NULL;printf(Input the Length of List:n);scanf(%d,&Length); CreatList(Length,L);printf(Travers the List :n);Traverse(L);while(1)printf(请输入要删除的元素:n);scanf(%d,&e);if(DelElem(L,e)/在L中将元素e删除 printf(删除%d后:n,e);break;printf(未找到该元素,删除失败n);Traverse(L);FreeList(L);printf(List release Success!n);return 0;Status CreatList(int Length,LinkList L)int i;LinkList Body=NULL,p=L;for (i=0;inext=Body;printf(Input the %dth num:n,i+1);scanf(%d,&(Body-data);p=Body;Body-next=NULL;Status FreeList(LinkList L)LinkList temp=NULL,p=L;while (p)temp=p-next;free(p);p=temp;Status Traverse(LinkList L)LinkList p=L;p=p-next;while(p)/while(p!=NULL)printf(%d ,p-data);p=p-next;printf(n);ElemType DelElem(LinkList L,ElemType e)LinkList p,q;q=p=L;p=p-next;/p指向头结点后第一个元素 while(p)if(p-data=e)q-next=p-next; free(p);return 1; elseq=p;/q始终指向p上一个结点p=p-next;/没有执行上个return,说明没找到 return 0;运行结果:输入节点个数依次输入各个节点的数值输入要删除的元素4)链表插入元素。源程序#include stdafx.h#include stdio.h#include stdlib.h#include malloc.h#define N 5typedef int elemtype;typedef struct node elemtype data; struct node *next;linklist;linklist *Creatlist(linklist*L) L=(linklist*)malloc(sizeof(linklist); L-next=NULL; return L; int Judge(linklist *L) if(L-next=NULL) printf(建表成功.n); else printf(建表失败.n); return 0;int Input(linklist *L,int x,linklist *r) int i; linklist *p; p=(linklist*)malloc(sizeof(linklist); p-data=x; p-next=NULL; r-next=p; printf(%d ,p-data); return 0;int Insert1(linklist *L,int i) linklist *p,*q,*r,*t; int j=1,item; p=L-next; q=L; r=L; if(L-next=NULL) printf(表空.n); return 0; else while(p!=NULL&jnext; j+; if(p=NULL) printf(%d不在表的范围内.n); return 0; else t=(linklist*)malloc(sizeof(linklist); t-next=NULL; printf(请输入item:); scanf(%d,&item); t-data=item; t-next=p; q-next=t; printf(在第%d位上插入值为%d的节点后的所有数据为n,i,item); for(j=0;jnext; printf(%d ,r-data); printf(n); return 1; int main() int i,item,k; linklist *L,*r; printf(单向链表的创建(包括初始化)与输出n); L=Creatlist(L); Judge(L); printf(表中的数据为:); r=L; Input(L,5,r); r=r-next; Input(L,32,r); r=r-next; Input(L,67
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚协议变更登记及共同财产分割执行合同
- 2025专业律师起草之综合服务外包合同
- 反洗钱交易监测数据服务合同
- 2025 物业服务合同范本 物业管理合同样本
- 2025标准购房合同范本全文
- 婚姻解除及财产分割赔偿详细协议范本
- 上市公司离职协议书范本及股权激励解除条款
- 科技公司员工保密与知识产权归属及竞业限制协议
- 专业物流公司运输经理聘用合同及服务质量承诺合同
- 试卷04【综合检测】八年级下册期中专项复习(解析版)
- 患者安全和护理质量的关联
- 社区获得性肺炎诊治进展
- 拆除沥青路面基层施工方案
- 公司网络安全培训课件
- (115)-第一章毛泽东思想及其历史地位
- 病原微生物实验室生物安全管理体系的建立与运行
- 小学数学教学设计的理论与案例分析
- 建筑给排水-外文文献翻译
- FREE高考英语核心词汇1783
- 高中物理答题卡模板
- 变电站值班员职业技能鉴定试题库(第二版)
评论
0/150
提交评论