版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三次实验报告庄振涛实验题3-1实现循环单链表的各种基本运算,完成以下功能:初始化循环单链表H。采用尾插法插入a,b,c,d,e。输出循环单链表H。输出循环单链表H的长度。在第3个位置上插入f。输出循环单链表H。删除第2个数据。输出循环单链表H。程序:#include<stdio.h>#include<malloc.h>typedefcharElemType;typedefstructLNode /*定义单链表结点类型*/{ ElemTypedata;structLNode*next;}LinkList;voidInitList(LinkList*&L){ L=(LinkList*)malloc(sizeof(LinkList)); /*创建头结点*/ L->next=L;}voidDestroyList(LinkList*&L){ LinkList*p=L,*q=p->next; while(q!=L) { free(p); p=q; q=p->next; } free(p);}intListEmpty(LinkList*L){ return(L->next==L);}intListLength(LinkList*L){ LinkList*p=L;inti=0; while(p->next!=L) { i++; p=p->next; } return(i);}voidDispList(LinkList*L){ LinkList*p=L->next; while(p!=L) { printf("%c",p->data); p=p->next; } printf("\n");}intGetElem(LinkList*L,inti,ElemType&e){ intj=0; LinkList*p; if(L->next!=L) /*单链表不为空表时*/ { if(i==1) { e=L->next->data; return1; } else /*i不为1时*/ { p=L->next; while(j<i-1&&p!=L) { j++; p=p->next; } if(p==L) return0; else { e=p->data; return1; } } } else /*单链表为空表时*/ return0;}intLocateElem(LinkList*L,ElemTypee){ LinkList*p=L->next; intn=1; while(p!=L&&p->data!=e) { p=p->next; n++; } if(p==L) return(0); else return(n);}intListInsert(LinkList*&L,inti,ElemTypee){ intj=0; LinkList*p=L,*s; if(p->next==L||i==1) /*原单链表为空表或i==1时*/ { s=(LinkList*)malloc(sizeof(LinkList)); /*创建新结点*s*/ s->data=e; s->next=p->next; /*将*s插入到*p之后*/ p->next=s; return1; } else { p=L->next; while(j<i-2&&p!=L) { j++; p=p->next; } if(p==L) /*未找到第i-1个结点*/ return0; else /*找到第i-1个结点*p*/ { s=(LinkList*)malloc(sizeof(LinkList)); /*创建新结点*s*/ s->data=e; s->next=p->next; /*将*s插入到*p之后*/ p->next=s; return1; } }}intListDelete(LinkList*&L,inti,ElemType&e){ intj=0; LinkList*p=L,*q; if(p->next!=L) /*原单链表不为空表时*/ { if(i==1) /*i==1时*/ { q=L->next; /*删除第1个结点*/ L->next=q->next; free(q); return1; } else /*i不为1时*/ { p=L->next; while(j<i-2&&p!=L) { j++; p=p->next; } if(p==L) /*未找到第i-1个结点*/ return0; else /*找到第i-1个结点*p*/ { q=p->next; /*q指向要删除的结点*/ p->next=q->next; /*从单链表中删除*q结点*/ free(q); /*释放*q结点*/ return1; } } } elsereturn0;externvoidInitList(LinkList*&L); /*以下均为外部函数*/externvoidDestroyList(LinkList*&L);externintListEmpty(LinkList*L);externintListLength(LinkList*L);externvoidDispList(LinkList*L);externintGetElem(LinkList*L,inti,ElemType&e);externintLocateElem(LinkList*L,ElemTypee);externintListInsert(LinkList*&L,inti,ElemTypee);externintListDelete(LinkList*&L,inti,ElemType&e); }voidmain(){ LinkList*h; ElemTypee; printf("(1)初始化循环单链表h\n"); InitList(h); printf("(2)依次采用尾插法插入a,b,c,d,e元素\n"); ListInsert(h,1,'a'); ListInsert(h,2,'b'); ListInsert(h,3,'c'); ListInsert(h,4,'d'); ListInsert(h,5,'e'); printf("(3)输出循环单链表h:"); DispList(h); printf("(4)循环单链表h长度=%d\n",ListLength(h)); printf("(5)在第3个元素位置上插入f元素\n"); ListInsert(h,3,'f'); printf("(6)输出循环单链表h:"); DispList(h); printf("(7)删除h的第2个元素\n"); ListDelete(h,2,e); printf("(8)输出循环单链表h:"); DispList(h);}}结果:实验题3-2实现顺序栈的各种基本运算,完成以下功能:初始化顺序栈S。判断栈S是否非空。依次进栈元素a,b,c,d,e,f。输出顺序栈长度。输出从栈顶到栈底的元素。出栈两次。输出从栈顶到栈底的元素。程序:#include<stdio.h>#include<malloc.h>#defineMaxSize100typedefcharElemType;typedefstruct{ ElemTypeelem[MaxSize]; inttop; /*栈指针*/}SqStack;voidInitStack(SqStack*&s){ s=(SqStack*)malloc(sizeof(SqStack)); s->top=-1;}voidClearStack(SqStack*&s){ free(s);}intStackLength(SqStack*s){ return(s->top+1);}intStackEmpty(SqStack*s){ return(s->top==-1);}intPush(SqStack*&s,ElemTypee){ if(s->top==MaxSize-1) return0; s->top++; s->elem[s->top]=e; return1;}intPop(SqStack*&s,ElemType&e){ if(s->top==-1) return0; e=s->elem[s->top]; s->top--; return1;}intGetTop(SqStack*s,ElemType&e){ if(s->top==-1) return0; e=s->elem[s->top]; return1;}voidDispStack(SqStack*s){ inti; for(i=s->top;i>=0;i--) printf("%c",s->elem[i]); printf("\n");externvoidInitStack(SqStack*&s);externvoidClearStack(SqStack*&s);externintStackLength(SqStack*s);externintStackEmpty(SqStack*s);externintPush(SqStack*&s,ElemTypee);externintPop(SqStack*&s,ElemType&e);externintGetTop(SqStack*s,ElemType&e);externvoidDispStack(SqStack*s);}voidmain(){ ElemTypee; SqStack*s; printf("(1)初始化栈s\n"); InitStack(s); printf("(2)栈为%s\n",(StackEmpty(s)?"空":"非空")); printf("(3)依次进栈元素a,b,c,d,e\n"); Push(s,'a'); Push(s,'b'); Push(s,'c'); Push(s,'d'); Push(s,'e'); printf("(4)栈长度:%d\n",StackLength(s)); printf("(5)从栈顶到栈底元素:");DispStack(s); printf("(6)出栈序列:"); Pop(s,e); printf("%c",e); Pop(s,e); printf("%c",e); printf("\n");printf("(7)从栈顶到栈底元素:");DispStack(s); }结果:实验题3-3 实现单链栈的各种基本运算,完成以下功能:初始化链栈S。判断栈S是否非空。依次进栈元素a,b,c,d,e。输出链栈长度。输出从栈顶到栈底的元素。删除栈顶元素。输出从栈顶到栈底的元素。程序:/*文件名:algo3-3.cpp*/#include<stdio.h>#include<malloc.h>typedefcharElemType;typedefstructlinknode{ ElemTypedata; /*数据域*/ structlinknode*next; /*指针域*/}LiStack;voidInitStack(LiStack*&s){ s=(LiStack*)malloc(sizeof(LiStack)); s->next=NULL;}voidClearStack(LiStack*&s){ LiStack*p=s->next; while(p!=NULL) { free(s); s=p; p=p->next; }}intStackLength(LiStack*s){ inti=0; LiStack*p; p=s->next; while(p!=NULL) { i++; p=p->next; } return(i);}intStackEmpty(LiStack*s){ return(s->next==NULL);}voidPush(LiStack*&s,ElemTypee){ LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); p->data=e; p->next=s->next; /*插入*p结点作为第一个数据结点*/ s->next=p;}intPop(LiStack*&s,ElemType&e){ LiStack*p; if(s->next==NULL) /*栈空的情况*/ return0; p=s->next; /*p指向第一个数据结点*/ e=p->data; s->next=p->next; free(p); return1;}intGetTop(LiStack*s,ElemType&e){ if(s->next==NULL) /*栈空的情况*/ return0; e=s->next->data; return1;}voidDispStack(LiStack*s){ LiStack*p=s->next; while(p!=NULL) { printf("%c",p->data); p=p->next; } printf("\n");externvoidInitStack(LiStack*&s);extern
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025 八年级道德与法治下册法治与农村克隆技术应用规范课件
- 餐饮业食品安全管理培训手册
- 汽车租赁公司运营管理手册
- 营销策划方案撰写与执行指南
- 互联网医疗服务平台运营规范手册
- 银行客户服务与营销指南
- 项目管理计划与实施手册
- 医院感染控制操作流程手册
- 物流仓储设备操作手册
- 公共交通票务管理与结算规范(标准版)
- 2026春节后建筑施工复工复产开工第一课
- 2025年律师事务所党支部书记年终述职报告
- 2025-2026 学年第一学期大一高等数学期末考试试卷
- 2025年高考(新高考Ⅱ卷)数学试题及答案
- 医院外联部主任述职报告
- 2025年广东省高考语文试卷(含标准答案)
- 2025年驾照三例测试题及答案
- 烟草行业消费者行为分析
- 《机械制图》 期末考试试题(附标准答案)
- new s-pro系列提案书海信日立空调营销股份
- 停课不停教隔空云教学
评论
0/150
提交评论