数据结构实验线性表基本操作

上传人:Bod****ee 文档编号:57286650 上传时间:2018-10-20 格式:DOC 页数:35 大小:280.01KB
返回 下载 相关 举报
数据结构实验线性表基本操作_第1页
第1页 / 共35页
数据结构实验线性表基本操作_第2页
第2页 / 共35页
数据结构实验线性表基本操作_第3页
第3页 / 共35页
数据结构实验线性表基本操作_第4页
第4页 / 共35页
数据结构实验线性表基本操作_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《数据结构实验线性表基本操作》由会员分享,可在线阅读,更多相关《数据结构实验线性表基本操作(35页珍藏版)》请在金锄头文库上搜索。

1、学学数据结构数据结构课程课程实验报告实验报告实实 验验 名名 称:称: 线性表基本操作的实现 实验室实验室( (中心中心) ): 学学 生生 信信 息:息: 专专 业业 班班 级:级: 指指 导导 教教 师师 : 实验完成时间:实验完成时间: 2016 教师评阅意见:签名: 年 月 日实验成绩:章: 线性表提升实验2实验一实验一 线性表基本操作的实现线性表基本操作的实现一、实验目的一、实验目的1.熟悉 C 语言的上机环境,进一步掌握 C 语言的结构特点。2.掌握线性表的顺序存储结构的定义及 C 语言实现。3.掌握线性表的链式存储结构单链表的定义及 C 语言实现。4.掌握线性表在顺序存储结构即顺

2、序表中的各种基本操作。5.掌握线性表在链式存储结构单链表中的各种基本操作。二、实验内容及要求二、实验内容及要求1.顺序线性表的建立、插入、删除及合并。2.链式线性表的建立、插入、删除及连接。三、实验设备及软件三、实验设备及软件计算机、Microsoft Visual C+ 6.0 软件四、设计方案(算法设计)四、设计方案(算法设计) 采用的数据结构本程序顺序表的数据逻辑结构为线性结构,存储结构为顺序存储;链表的数据逻辑结构依然为线性结构,存储结构为链式结构。 设计的主要思路1.建立含 n 个数据元素的顺序表并输出该表中各元素的值及顺序表的长度,顺序表的长度和元素由用户输入;2.利用前面建立的顺

3、序表,对顺序表进行插入、删除及合并操作;3.建立一个带头结点的单链表,结点的值域为整型数据,链表的元素由用户输入;章: 线性表提升实验34.对前面建立的链表进行插入、删除及连个链表的连接操作; 算法描述1、顺序表void Init(sqlist /初始化顺序表BOOL Inse(sqlist /在线性表中插入元素BOOL del(sqlist /在线性表中删除元素int Loc(sqlist,char); /在线性表中定位元素void print(sqlist); /输出顺序表void combine( sqlist /两个线性表的合并2、链表void CreaL(LinkList /生成一个

4、单链表BOOL LInsert(LinkList /在单链表中插入一个元素BOOL LDele(LinkList /在单链表中删除一个元素BOOL LFind_key(LinkList,char,int /按关键字查找一个元素BOOL LFind_order(LinkList,char /按序号查找一个元素void LPrint(LinkList); /显示单链表所有元素void LUnion(LinkList /两个链表的连接五、程序代码五、程序代码1、顺序表#include 章: 线性表提升实验4#include #define Max 116enum BOOLFalse,True;typ

5、edef structchar elemMax; /线性表int last; /last 指示当前线性表的长度sqlist;void Init(sqlist BOOL Inse(sqlist /在线性表中插入元素BOOL del(sqlist /在线性表中删除元素int Loc(sqlist,char); /在线性表中定位元素void print(sqlist); void combine( sqlist void main()sqlist L1;sqlist L2;sqlist L3;int loc,S=1;char j,ch;BOOL temp;printf(“本程序用来实现顺序结构的线性

6、表。n“);printf(“可以实现查找、插入、删除、两个线性表的合并等操作。n“);Init(L1); 章: 线性表提升实验5while(S)printf(“n 请选择:n“);printf(“1.显示所有元素n“);printf(“2.插入一个元素n“);printf(“3.删除一个元素n“);printf(“4.查找一个元素n“);printf(“5.线性表的合并n“);printf(“6.退出程序nn“);scanf(“ %c“,switch(j)case 1:print(L1); break; case 2:printf(“请输入要插入的元素(一个字符)和插入位置:n“);print

7、f(“格式:字符,位置;例如:a,2n“);scanf(“%c,%d“, temp=Inse(L1,loc,ch); if(temp=False) printf(“插入失败!n“); else printf(“插入成功!n“); print(L1);break;case 3:printf(“请输入要删除元素的位置:“);scanf(“%d“, temp=del(L1,loc,ch); if(temp=True) printf(“删除了一个元素:%cn“,ch); 章: 线性表提升实验6else printf(“该元素不存在!n“); printf(“删除该元素后的线性表为:“);print(L

8、1);break;case 4:printf(“请输入要查找的元素:“);scanf(“ %c“, loc=Loc(L1,ch); if(loc!=-1) printf(“该元素所在位置:%dn“,loc+1); else printf(“%c 不存在!n“,ch);break;case 5:printf(“请输入要进行合并的第二个线性表:“);Init(L2);combine(L1,L2,L3);printf(“合并前的两个线性表如下:n“);print(L1);print(L2);printf(“输出合并后的线性表如下:n“);print(L3);break;default:S=0;pri

9、ntf(“程序结束,按任意键退出!n“);getch();章: 线性表提升实验7void Init(sqlist printf(“请输入初始线性表长度:n=“); scanf(“%d“,printf(“请输入从 1 到%d 的各元素(字符),例如:abcdefgn“,v.last);getchar();for(i=0;iv.last+1)printf(“插入位置不合理!n“); return False;else if(v.last=Max) printf(“线性表已满!n“);return False;else for(i=v.last-1;i=loc-1;i-) 章: 线性表提升实验8v.

10、elemi+1=v.elemi;v.elemloc-1=ch; v.last+; return True;BOOL del(sqlist if(locv.last) return False;else ch=v.elemloc-1; for(j=loc-1;j#include #include #define LEN sizeof(LNode) enum BOOLFalse,True; typedef struct nodechar data; struct node *next;LNode,*LinkList;void CreaL(LinkList /生成一个单链表BOOL LInsert(

11、LinkList /在单链表中插入一个元素BOOL LDele(LinkList /在单链表中删除一个元素BOOL LFind_key(LinkList,char,int /按关键字查找一个元素BOOL LFind_order(LinkList,char /按序号查找一个元素void LPrint(LinkList); /显示单链表所有元素void LUnion(LinkList /两个链表的连接void main()LinkList L;LinkList T;章: 线性表提升实验12LinkList H;BOOL temp;int num,num1,loc,flag=1;char j,ch;

12、printf(“本程序实现链式结构的线性表的操作。n“);printf(“可以进行插入,删除,定位,查找等操作。n“);printf(“请输入初始时链表长度:“); scanf(“%d“,CreaL(L,num); LPrint(L); while(flag) printf(“请选择:n“);printf(“1.显示所有元素n“); printf(“2.插入一个元素n“); printf(“3.删除一个元素n“); printf(“4.按关键字查找元素n“); printf(“5.按序号查找元素n“); printf(“6.链表的连接n“);printf(“7.退出程序n“); scanf(“

13、 %c“,switch(j)case 1:LPrint(L); break;case 2:printf(“请输入元素(一个字符)和要插入的位置:n“);printf(“格式:字符,位置;例如:a,3n“);scanf(“ %c,%d“, 章: 线性表提升实验13temp=LInsert(L,loc,ch); if(temp=False) printf(“插入失败!n“); else printf(“插入成功!n“);LPrint(L);break;case 3:printf(“请输入要删除的元素所在位置:“);scanf(“%d“, temp=LDele(L,loc,ch); if(temp=

14、False) printf(“删除失败!n“); else printf(“成功删除了一个元素:%cn“,ch); LPrint(L);break;case 4:if(L-next=NULL) printf(“链表为空!n“);elseprintf(“请输入要查找的元素(一个字符):“);scanf(“ %c“, temp=LFind_key(L,ch,loc); if(temp=False) printf(“没有找到该元素!n“); else printf(“该元素在链表的第%d 个位置。n“,loc); break;case 5:if(L-next=NULL) printf(“链表为空!n“);章: 线性表提升实验14elseprintf(“请输入要查找的位置:“);scanf(“%d“, temp=LFind_order(L,ch,loc);if(temp=False) printf(“该位置不存在!n“); else printf(“第%d 个元素是:%cn“,loc,ch);break;case 6:if(L-next=NULL) printf(“链表为空!n“);elseprintf(“请输入第二个链表的长度:“); scanf(“%d“,CreaL(T,num1); if(T-next=N

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学研究

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号