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

上传人:b****2 文档编号:2946772 上传时间:2023-05-05 格式:DOCX 页数:19 大小:64.91KB
下载 相关 举报
数据结构课程设计报告实验报告doc.docx_第1页
第1页 / 共19页
数据结构课程设计报告实验报告doc.docx_第2页
第2页 / 共19页
数据结构课程设计报告实验报告doc.docx_第3页
第3页 / 共19页
数据结构课程设计报告实验报告doc.docx_第4页
第4页 / 共19页
数据结构课程设计报告实验报告doc.docx_第5页
第5页 / 共19页
数据结构课程设计报告实验报告doc.docx_第6页
第6页 / 共19页
数据结构课程设计报告实验报告doc.docx_第7页
第7页 / 共19页
数据结构课程设计报告实验报告doc.docx_第8页
第8页 / 共19页
数据结构课程设计报告实验报告doc.docx_第9页
第9页 / 共19页
数据结构课程设计报告实验报告doc.docx_第10页
第10页 / 共19页
数据结构课程设计报告实验报告doc.docx_第11页
第11页 / 共19页
数据结构课程设计报告实验报告doc.docx_第12页
第12页 / 共19页
数据结构课程设计报告实验报告doc.docx_第13页
第13页 / 共19页
数据结构课程设计报告实验报告doc.docx_第14页
第14页 / 共19页
数据结构课程设计报告实验报告doc.docx_第15页
第15页 / 共19页
数据结构课程设计报告实验报告doc.docx_第16页
第16页 / 共19页
数据结构课程设计报告实验报告doc.docx_第17页
第17页 / 共19页
数据结构课程设计报告实验报告doc.docx_第18页
第18页 / 共19页
数据结构课程设计报告实验报告doc.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

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

 

《数据结构》课程实验报告

 

专业:

指导老师:

班级:

:

学号:

完成日期:

 

一、实验目的

1、掌握线性表的顺序存储结构和链式存储结构;

2、熟练掌握顺序表和链表基本算法的实现;

3、掌握利用线性表数据结构解决实际问题的方法和基本技巧;

4、按照实验题目要求独立正确地完成实验容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果);

5、按时提交实验报告。

二、实验环境

计算机、C语言程序设计环境

三、实验学时

2学时,选做实验。

四、实验容

一、顺序表的基本操作实现实验

要求:

数据元素类型ElemType取整型int。

按照顺序存储结构实现如下算法(各算法边界条件和返回结果适当给出):

1创建任意整数线性表(即线性表的元素值随机在键盘上输入),长度限定在20之;

2打印(遍历)该线性表(依次打印出表中元素值);

3在线性表中查找第i个元素,并返回其值;

4在线性表中第i个元素之前插入一已知元素;

5在线性表中删除第i个元素;

6求线性表中所有元素值(整数)之和;

 

二、链表(带头结点)基本操作实验

要求:

数据元素类型ElemType取字符型char。

按照动态单循环链表结构实现如下算法(各算法边界条件适当给出):

1创建任意字符型有序(递增排序)单循环链表(即链表的字符元素随机在键盘上输入),长度限定在15之;

2打印(遍历)该链表(依次打印出表中元素值);

3在链表中查找第i个元素,i合法返回元素值,否则,返回FALSE;

4在链表中查找与一已知字符相同的第一个结点,有则返回TRUE,否则,返回FALSE;

5在链表中按照有序方式插入一已知字符元素;

6在线性表中删除第i个结点;

7计算链表的长度。

 

五、实验容一步骤:

#include

#include

#defineMAX20

typedefintElemType;

typedefstruct

{

ElemTypeelem[MAX];

intlast;

}SeqList;

voidInitList(SeqList*L)

{

L->last=-1;

}

voidPrintList(SeqList*L)

{

inti;

printf("\n现在的数据为:

");

for(i=0;i<=L->last;i++)

printf("%d",L->elem[i]);

}

voidCreatList(SeqList*L)

{

ElemTypee;

inti=0;

printf("\n输入数据(-1退出):

");

scanf("%d",&e);

while(e!

=-1)

{

if(i

{

L->elem[i]=e;

L->last=i;

i++;

}

else

{

printf("\n表满!

");

}

scanf("%d",&e);

}

}

voidLocate(SeqList*L,inti,ElemTypee)

{

i=0;

while((i<=L->last)&&(L->elem[i]!

=e))

i++;

if(i<=L->last)

printf("\n%d在顺序表中第%d个位置上。

",e,i+1);

else

printf("\n没有此数!

");

}

voidInsList(SeqList*L,inti,ElemTypee)

{

intk;

if(i<1||i>L->last+2)

{

printf("\n插入位置i值不合法");

}

elseif(L->last>=MAX-1)

printf("\n表已满无法插入");

else

{

for(k=L->last;k>=i-1;k--)

L->elem[k+1]=L->elem[k];

L->elem[i-1]=e;

L->last++;

}

PrintList(L);

}

voidDelList(SeqList*L,inti,ElemType*e)

{

intk;

if(i<1||i>L->last+1)

{

printf("\n删除位置不合法!

");

}

else

{

*e=L->elem[i-1];

for(k=i;k<=L->last;k++)

L->elem[k-1]=L->elem[k];

L->last=L->last-1;

}

PrintList(L);

}

voidSumList(SeqList*L)

{

intj,sum=0;

for(j=0;j<=L->last;j++)

{

sum=sum+L->elem[j];

}

printf("所有元素之和:

%d",sum);

}

voidmenu()

{

printf("\n************************菜单*********************");

printf("\n1.创建任意整数线性表");

printf("\n2.打印(遍历)线性表");

printf("\n3.查找元素");

printf("\n4.插入元素");

printf("\n5.删除元素");

printf("\n6.所有元素之和");

printf("\n7.退出");

printf("\n***********************************************");

}

voidmain()

{

inti;

intflag=0;

ElemTypee;

SeqList*L;

L=(SeqList*)malloc(sizeof(SeqList));

InitList(L);

menu();

while(!

flag)

{

printf("\n\n请输入你的选择:

");

scanf("%d",&i);

switch(i)

{

case1:

CreatList(L);

break;

case2:

PrintList(L);

break;

case3:

printf("输入要查找的数值:

");

scanf("%d",&e);

Locate(L,i,e);

break;

case4:

printf("输入插入位置和数据值(ab):

");

scanf("%d%d",&i,&e);

InsList(L,i,e);

break;

case5:

printf("输入要删除元素的位置:

");

scanf("%d",&i);

DelList(L,i,&e);

break;

case6:

SumList(L);

break;

case7:

flag=1;

break;

}

}

}

六、实验容一测试数据与实验结果:

七、实验容二步骤:

#include

#include

#defineMAX15

#defineTURE1

#defineFALSE0

typedefcharElemType;

typedefstructNode

{

chardate;

structNode*next;

}Node,*LinkList;

voidInitList(LinkList*L)

{

*L=(LinkList)malloc(sizeof(char));

(*L)->next=NULL;

}

voidPrintfLink(LinkListL)

{

LinkListp;

p=L->next;

printf("链表为:

");

while(p!

=NULL)

{

printf("%c",p->date);

p=p->next;

}

}

voidCreate(LinkListL)

{

LinkLists,r;

charc;

intflag=1;

intn;

r=L;

printf("元素个数:

");

scanf("%d",&n);

if(n>MAX)

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;

}

}

}

voidOrder(LinkListL)

{

charc;

Node*r,*q,*p;

for(r=L->next;r->next!

=NULL;r=r->next)

{

p=r;

for(q=r->next;q;q=q->next)

if((q->date)<(p->date))

p=q;

if(p!

=r)

{

c=r->date;

r->date=p->date;

p->date=c;

}

}PrintfLink(L);

}

voidGet(LinkListL,inti,ElemType*e)

{

intj;Node*p;

p=L;j=-1;

while((p->next!

=NULL)&&(j

{

p=p->next;

j++;

}

*e=p->date;

if(i==j)

printf("第%d个元素为:

%c",i,*e);

else

printf("FALSE");

}

voidLocate(LinkListL,ElemTypee)

{

inti=1;

LinkListp;

p=L->next;

while(p&&p->date!

=e)

{

i=i++;

p=p->next;

}

if(!

p)

printf("FALSE\n");

else

{

printf("TRUE\n");

printf("该元素在第%d个位置!

",i-1);

}

}

voidInsList(LinkListL,inti,ElemTypee)

{

Node*p,*s;

intk=0;

p=L;

while(p!

=NULL&&k

{

p=p->next;

k=k++;

}

if(!

p)

{

printf("插入位置不合理!

");

}

s=(Node*)malloc(sizeof(char));

s->date=e;

s->next=p->next;

p->next=s;

Order(L);

}

voidDelList(LinkListL,inti,ElemType*e)

{

Node*p,*r;

intj;

j=0;

p=L;

while((p->next!

=NULL)&&(j

{

p=p->next;

j++;

}

if(p->next!

=NULL)

{

p->next=p->next->next;

r=p->next;

*e=r->date;

printf("删除第%d个元素:

%c\n",i,*e);

}

else

printf("删除结点的位置i不合理!

");

}

voidListLength(LinkListL)

{

Node*p;intj=0;

p=L->next;

while(p!

=NULL)

{

p=p->next;

j++;

}

printf("单链表的长度:

%d",j);

}

voidmenu()

{

printf("\n************************菜单*********************");

printf("\n1.创建任意字符型单循环链表");

printf("\n2.打印(遍历)该链表");

printf("\n3.查找第i个元素");

printf("\n4.查找与一已知字符相同的元素");

printf("\n5.插入元素");

printf("\n6.删除第i个结点");

printf("\n7.计算链表的长度");

printf("\n8.退出");

printf("\n***********************************************");

}

voidmain()

{

inti;

intflag=0;

ElemTypee;

LinkListL;

L=(LinkList)malloc(sizeof(char));

InitList(&L);

menu();

while(!

flag)

{

printf("\n\n请输入你的选择(1~8):

");

scanf("%d",&i);

switch(i)

{

case1:

Create(L);

break;

case2:

Order(L);

break;

case3:

printf("输入要查找的第i个元素:

");

scanf("%d",&i);

Get(L,i,&e);

break;

case4:

printf("输入查找的元素:

");

rewind(stdin);

scanf("%c",&e);

Locate(L,e);

break;

case5:

printf("输入插入的元素:

");

rewind(stdin);

scanf("%c",&e);

InsList(L,i,e);

break;

case6:

printf("输入要删除第几个结点:

");

scanf("%d",&i);

DelList(L,i,&e);

break;

case7:

ListLength(L);

break;

case8:

flag=1;

break;

}

}

}

八、实验容二测试数据与实验结果:

 

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2