数据结构课程设计实验报告.doc_电子设计实验报告doc

其他范文 时间:2020-02-27 02:44:35 收藏本文下载本文
【www.daodoc.com - 其他范文】

数据结构课程设计实验报告.doc由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“电子设计实验报告doc”。

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

专业:

指导老师:

班级:

姓名:

学号:

完成日期:

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

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

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

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

5、按时提交实验报告。

二、实验环境

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

三、实验学时

2学时,选做实验。

四、实验内容

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

要求:数据元素类型ElemType取整型int。按照顺序存储结构实现如下算法(各算法边界条件和返回结果适当给出):

① 创建任意整数线性表(即线性表的元素值随机在键盘上输入),长度限定在20之内; ② 打印(遍历)该线性表(依次打印出表中元素值); ③ 在线性表中查找第i个元素,并返回其值; ④ 在线性表中第i个元素之前插入一已知元素; ⑤ 在线性表中删除第i个元素;

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

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

要求:数据元素类型ElemType取字符型char。按照动态单循环链表结构实现如下算法(各算法边界条件适当给出):

① 创建任意字符型有序(递增排序)单循环链表(即链表的字符元素随机在键盘上输入),长度限定在15之内; ② 打印(遍历)该链表(依次打印出表中元素值); ③ 在链表中查找第i个元素,i合法返回元素值,否则,返回FALSE; ④ 在链表中查找与一已知字符相同的第一个结点,有则返回TRUE,否则,返回FALSE; ⑤ 在链表中按照有序方式插入一已知字符元素; ⑥ 在线性表中删除第i个结点; ⑦ 计算链表的长度。

五、实验内容一步骤:

#include #include #define MAX 20 typedef int ElemType;typedef struct { ElemType elem[MAX];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->elem[i]);

}

void CreatList(SeqList *L){ ElemType e;int i=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);} } void Locate(SeqList *L, int i,ElemType e){ i=0;while((ilast)&&(L->elem[i]!=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插入位置i值不合法”);

}

else if(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);} void DelList(SeqList *L,int i,ElemType *e){ int k;if(iL->last+1){

printf(“n删除位置不合法!”);} else

{

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

for(k=i;klast;k++)

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

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

} PrintList(L);} void SumList(SeqList *L){ int j,sum=0;for(j=0;jlast;j++){

sum=sum+L->elem[j];} 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;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(“%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;struct 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(“元素个数:”);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;

} } } 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->next)

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)&&(j

{

p=p->next;

j++;

} *e=p->date;if(i==j)

printf(“第%d个元素为:%c”,i,*e);

else

printf(“FALSE”);

}

void Locate(LinkList L, ElemType e){ int i=1;LinkList 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&&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);} void DelList(LinkList L,int i,ElemType *e){ Node *p,*r;int j;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个元素:%cn”,i,*e);} else

printf(“删除结点的位置i不合理!”);

} void ListLength(LinkList L){ Node *p;int j=0;p=L->next;while(p!=NULL){

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=(LinkList)malloc(sizeof(char));

InitList(&L);menu();while(!flag){

printf(“nn请输入你的选择(1~8):”);

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;}

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

数据结构课程设计

课 程 设 计 任 务 书信息 学院 信息管理与信息系统 专业 09级1班 班 孙鹏一、二、课程设计题目: 迷宫求解、一元多项式 课程设计主要参考资料: 数据结构(C语言版) 严蔚敏、吴伟......

数据结构课程设计

数据结构课程设计题目(2013年)一、必做题 1、图书管理系统(线性表) [问题描述]设计一个程序,记录并统计图书使用情况。 [基本要求] (1)图书信息包括图书ID号,图书名,出版社名,出版年月......

课程设计(数据结构)

课程设计题目1、运动会分数统计任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或......

数据结构课程设计

《数据结构》课程设计报告学 号 姓 名 班 级 指导教师XXX XXX XXX XXX 安徽工业大学计算机学院2014年6月利用栈实现迷宫问题的求解一、问题描述以一个M*N的长方阵表示迷宫,0......

数据结构课程设计

数据结构课程设计计算机科学与技术2008级1班课程设计题目:图书借阅管理系统 姓名:学号:一.需求分析说明图书借阅处理过程简述处理过程主要包含:新增图书上架、办理图证、图书查询......

下载数据结构课程设计实验报告.docword格式文档
下载数据结构课程设计实验报告.doc.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文