数据结构课程设计实验报告doc.docx

上传人:小飞机 文档编号:3111223 上传时间:2023-03-10 格式:DOCX 页数:8 大小:38.95KB
返回 下载 相关 举报
数据结构课程设计实验报告doc.docx_第1页
第1页 / 共8页
数据结构课程设计实验报告doc.docx_第2页
第2页 / 共8页
数据结构课程设计实验报告doc.docx_第3页
第3页 / 共8页
数据结构课程设计实验报告doc.docx_第4页
第4页 / 共8页
数据结构课程设计实验报告doc.docx_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据结构课程设计实验报告doc.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计实验报告doc.docx(8页珍藏版)》请在三一办公上搜索。

1、数据结构课程设计实验报告doc数据结构课程实验报告 专业: 指导老师: 班级: 姓名: 学号: 完成日期: 一、 实验目的 1、 掌握线性表的顺序存储结构和链式存储结构; 2、 熟练掌握顺序表和链表基本算法的实现; 3、 掌握利用线性表数据结构解决实际问题的方法和基本技巧; 4、 按照实验题目要求独立正确地完成实验内容; 5、 按时提交实验报告。 二、实验环境 计算机、C语言程序设计环境 三、实验学时 2学时,选做实验。 四、实验内容 一、顺序表的基本操作实现实验 要求:数据元素类型ElemType取整型int。按照顺序存储结构实现如下算法: 创建任意整数线性表,长度限定在20之内; 打印该线

2、性表; 在线性表中查找第i个元素,并返回其值; 在线性表中第i个元素之前插入一已知元素; 在线性表中删除第i个元素; 求线性表中所有元素值之和; 二、链表基本操作实验 要求:数据元素类型ElemType取字符型char。按照动态单循环链表结构实现如下算法: 创建任意字符型有序单循环链表,长度限定在15之内; 打印该链表; 在链表中查找第i个元素,i合法返回元素值,否则,返回FALSE; 在链表中查找与一已知字符相同的第一个结点,有则返回TRUE,否则,返回FALSE; 在链表中按照有序方式插入一已知字符元素; 在线性表中删除第i个结点; 计算链表的长度。 五、实验内容一步骤: #include

3、 #include #define MAX 20 typedef int ElemType; typedef struct ElemType elemMAX; int last; SeqList; void InitList(SeqList *L) L-last=-1; void PrintList(SeqList *L) int i; printf(n现在的数据为:); for(i=0;ilast;i+) printf(%d ,L-elemi); void CreatList(SeqList *L) ElemType e; int i=0; printf(n输入数据(-1退出):); sca

4、nf(%d,&e); while(e!=-1) if(ielemi=e; L-last=i; i+; else printf(n表满!); scanf(%d,&e); void Locate(SeqList *L, int i,ElemType e) i=0; while (ilast)&(L-elemi!=e) i+; if (ilast) printf(n%d在顺序表中第%d个位置上。,e,i+1); else printf(n没有此数!); void InsList(SeqList *L, int i, ElemType e) int k; if(iL-last+2) printf(n插

5、入位置i值不合法); else if(L-last=MAX-1) printf(n表已满无法插入); else for(k=L-last; k=i-1; k-) L-elemk+1=L-elemk; L-elemi-1=e; L-last+; PrintList(L); void DelList(SeqList *L,int i,ElemType *e) int k; if(iL-last+1) printf(n删除位置不合法!); else *e=L-elemi-1; for(k=i; klast; k+) L-elemk-1=L-elemk; L-last=L-last-1; PrintL

6、ist(L); void SumList(SeqList *L) int j,sum=0; for(j=0;jlast;j+) sum=sum+L-elemj; printf(所有元素之和:%d,sum); void menu printf(n*菜单*); printf(n 1.创建任意整数线性表); printf(n 2.打印线性表); printf(n 3.查找元素); printf(n 4.插入元素); printf(n 5.删除元素); printf(n 6.所有元素之和); printf(n 7.退出); printf(n*); void main int i; int flag=0

7、; ElemType e; SeqList *L; L=(SeqList*)malloc(sizeof(SeqList); InitList(L); menu; while(!flag) printf(nn请输入你的选择:); scanf(%d,&i); switch(i) case 1: CreatList(L); break; case 2: PrintList(L); break; case 3: printf(输入要查找的数值:); scanf(%d,&e); Locate(L,i,e); break; case 4: printf(输入插入位置和数据值(a b):); scanf(%

8、d%d,&i,&e); InsList(L,i,e); break; case 5: printf(输入要删除元素的位置:); scanf(%d,&i); DelList(L,i,&e); break; case 6: SumList(L); break; case 7: flag=1; break; 六、实验内容一测试数据与实验结果: 七、实验内容二步骤: #include #include #define MAX 15 #define TURE 1 #define FALSE 0 typedef char ElemType; typedef struct Node char date; s

9、truct Node * next; Node,*LinkList; void InitList(LinkList *L) *L=(LinkList)malloc(sizeof(char); (*L)-next=NULL; void PrintfLink(LinkList L) LinkList p; p=L-next; printf(链表为:); while(p!=NULL) printf(%c ,p-date); p=p-next; void Create(LinkList L) LinkList s,r; char c; int flag=1; int n; r=L; printf(元素

10、个数:); scanf(%d,&n); if(nMAX) printf(超出限定长度!); else printf(输入字符(以#键结束):); while(flag) scanf(%c,&c); if(c!=#) s=(Node*)malloc(sizeof(char); s-date=c; r-next=s; r=s; else flag=0; r-next =NULL; void Order(LinkList L) char c; Node *r,*q,*p; for(r=L-next;r-next!=NULL;r=r-next ) p=r; for(q=r-next;q;q=q-nex

11、t ) if(q-date)date) p=q; if(p!=r) c=r-date; r-date=p-date; p-date=c; PrintfLink(L); void Get(LinkList L, int i, ElemType *e) int j; Node *p; p=L; j=-1; while (p-next!=NULL)&(jnext; j+; *e=p-date ; if(i=j) printf(第%d个元素为:%c,i,*e); else printf(FALSE); void Locate(LinkList L, ElemType e) int i=1; LinkL

12、ist p; p=L-next ; while(p&p-date!=e) i=i+; p=p-next; if(!p) printf(FALSEn); else printf(TRUEn); printf(该元素在第%d个位置!,i-1); void InsList(LinkList L,int i,ElemType e) Node *p,*s; int k=0; p=L; while(p!=NULL&knext; k=k+; if(!p) printf(插入位置不合理!); s=(Node*)malloc(sizeof(char); s-date=e; s-next=p-next; p-ne

13、xt=s; Order(L); void DelList(LinkList L,int i,ElemType *e) Node *p,*r; int j; j=0; p=L; while(p-next!=NULL)&(jnext; j+; if(p-next!=NULL) p-next=p-next-next; r=p-next; *e=r-date ; printf(删除第%d个元素:%cn,i,*e); else printf(删除结点的位置i不合理!); void ListLength(LinkList L) Node *p;int j=0; p=L-next; while(p!=NUL

14、L) p=p-next; j+; printf(单链表的长度:%d,j); void menu printf(n*菜单*); printf(n 1.创建任意字符型单循环链表); printf(n 2.打印该链表); printf(n 3.查找第i个元素); printf(n 4.查找与一已知字符相同的元素); printf(n 5.插入元素); printf(n 6.删除第i个结点); printf(n 7.计算链表的长度); printf(n 8.退出); printf(n*); void main int i; int flag=0; ElemType e; LinkList L; L=(

15、LinkList)malloc(sizeof(char); InitList(&L); menu; while(!flag) printf(nn请输入你的选择(18):); scanf(%d,&i); switch(i) case 1: Create(L); break; case 2: Order(L); break; case 3: printf(输入要查找的第i个元素:); scanf(%d,&i); Get(L,i,&e); break; case 4: printf(输入查找的元素:); rewind(stdin); scanf(%c,&e); Locate(L,e); break; case 5: printf(输入插入的元素:); rewind(stdin); scanf(%c,&e); InsList(L,i,e); break; case 6: printf(输入要删除第几个结点:); scanf(%d,&i); DelList(L,i,&e); break; case 7: ListLength(L); break; case 8: flag=1; break; 八、实验内容二测试数据与实验结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号