线性表数据结构试验.docx

上传人:b****0 文档编号:10119281 上传时间:2023-05-23 格式:DOCX 页数:16 大小:81.56KB
下载 相关 举报
线性表数据结构试验.docx_第1页
第1页 / 共16页
线性表数据结构试验.docx_第2页
第2页 / 共16页
线性表数据结构试验.docx_第3页
第3页 / 共16页
线性表数据结构试验.docx_第4页
第4页 / 共16页
线性表数据结构试验.docx_第5页
第5页 / 共16页
线性表数据结构试验.docx_第6页
第6页 / 共16页
线性表数据结构试验.docx_第7页
第7页 / 共16页
线性表数据结构试验.docx_第8页
第8页 / 共16页
线性表数据结构试验.docx_第9页
第9页 / 共16页
线性表数据结构试验.docx_第10页
第10页 / 共16页
线性表数据结构试验.docx_第11页
第11页 / 共16页
线性表数据结构试验.docx_第12页
第12页 / 共16页
线性表数据结构试验.docx_第13页
第13页 / 共16页
线性表数据结构试验.docx_第14页
第14页 / 共16页
线性表数据结构试验.docx_第15页
第15页 / 共16页
线性表数据结构试验.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

线性表数据结构试验.docx

《线性表数据结构试验.docx》由会员分享,可在线阅读,更多相关《线性表数据结构试验.docx(16页珍藏版)》请在冰点文库上搜索。

线性表数据结构试验.docx

线性表数据结构试验

浦江移动网络学院

实验报告书

课程名:

《数据结构》

题目:

线性表数据结构试验

班级:

学号:

姓名:

 

线性表实验报告要求

1目的与要求:

1)掌握线性表数据结构的基本概念和抽象数据类型描述;

2)熟练掌握线性表数据结构的顺序和链式存储存表示;

3)熟练掌握线性表顺序存储结构的基本操作算法实现;

4)熟练掌握线性表的链式存储结构的基本操作算法实现;

5)掌握线性表在实际问题中的应用和基本编程技巧;

6)按照实验题目要求独立正确地完成实验内容(提交程序清单及相关实验数据与运行结果);

7)按照报告格式和内容要求,认真书写实验报告,并在试验后的第三天提交电子(全班同学提交到学委,再统一打包提交给老师)和纸质(每班每次5份,学委安排,保证每个同学至少提交一次);

8)积极开展实验组组内交流和辅导,严禁复制和剽窃他人实验成果,一旦发现严肃处理;

9)上实验课前,要求每个同学基本写好程序,并存储在自己的U盘上,用于实验课堂操作时调试和运行。

凡不做准备,没有提前编写程序者,拒绝上机试验。

2实验内容或题目

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

要求:

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

按照顺序存储结构实现如下算法:

1)创建任意整数线性表(即线性表的元素值随机在键盘上输入)的顺序存储结构(即顺序表),长度限定在25之内;

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

3)在顺序表中查找第i个元素,并返回其值;

4)在顺序表第i个元素之前插入一已知元素;

5)在顺序表中删除第i个元素;

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

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

要求:

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

按照动态单链表结构实现如下算法:

1)按照头插法或尾插法创建一个带头结点的字符型单链表(链表的字符元素从键盘输入),长度限定在10之内;

2)打印(遍历)该链表(依次打印出表中元素值,注意字符的输入顺序与链表的结点顺序);

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

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

5)在链表中第i个结点之前插入一个新结点;

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

7)计算链表的长度。

3实验步骤与源程序

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

Common.h

#include

#include

#include

#defineOK1

#defineERROR0

#defineTRUE1

#defineFALSE0

Seqlist.h

#defineElemTypeint

#defineMAXSIZE25

typedefstruct

{

ElemTypeelem[MAXSIZE];

intlast;

}SeqList;

#include"common.h"

#include"seqlist.h"

intLocate(SeqListL,intn)

{

inti=0;

while((i

=n))

i++;

if(i<=L.last)

returnL.elem[i];

else

return(-1);

}

intInsList(SeqList*L,inti,ElemTypee)

{

intk;

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

{

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

return(ERROR);

}

if(L->last>=MAXSIZE-1)

{

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

return(ERROR);

}

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

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

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

L->last++;

return(OK);

}

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

{

intk;

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

{

printf("删除位置不合法!

");

return(ERROR);

}

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

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

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

L->last--;

return(OK);

}

intAddList(SeqList*L)

{

intk,s=0;

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

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

returns;

}

voidmain()

{

SeqListl;

intp,q,r,*q1;

inti;

q1=(int*)malloc(sizeof(int));

printf("请输入线性表的长度:

");

scanf("%d",&r);

l.last=r-1;

printf("请输入线性表的各元素值:

\n");

for(i=0;i<=l.last;i++)

{

scanf("%d",&l.elem[i]);

}

printf("请输入要查找的元素的位置:

\n");

scanf("%d",&q);

p=Locate(l,q);

if(p==-1)

printf("在此线性表中没有这样的元素!

\n");

else

printf("该位置的元素为:

%d\n",p);

printf("请输入要插入的位置:

\n");

scanf("%d",&p);

printf("请输入要插入的元素值:

\n");

scanf("%d",&q);

InsList(&l,p,q);

for(i=0;i<=l.last;i++)

{

printf("%d",l.elem[i]);

}

printf("\n");

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

\n");

scanf("%d",&p);

DelList(&l,p,&q);

printf("删除的元素值为:

%d\n",q);

printf("删除后的元素序列:

\n");

for(i=0;i<=l.last;i++)

printf("%d",l.elem[i]);

printf("\n");

printf("剩余数字之和为:

");

printf("\n%d\n",AddList(&l));

}

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

Common.h

#include

#include

#include

#defineOK1

#defineERROR0

#defineTRUE1

#defineFALSE

Linklist.h

typedefcharElemType;

typedefstructNode

{

ElemTypedata;

structNode*next;

}Node,*LinkList;

 

#include

#include

#defineElemTypechar

typedefstructNode

{

ElemTypedata;

structNode*next;

}Node,*LinkList;

 

LinkListCreateFromHead()

{

LinkListL;

Node*s;

charc;

intflag=1,i=1;

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

L->next=NULL;

while(flag&&i<=10)

{

c=getchar();

if(c!

='$')

{

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

s->data=c;

s->next=L->next;

L->next=s;

}

else

flag=0;

i++;

}

returnL;

}

Node*search(LinkListL,inti)

{

intj=0;

Node*p;

p=L;

while(p->next!

=NULL&&j

{

p=p->next;

j++;

}

if(i==j)returnp;

elsereturnNULL;

}

Node*locate(LinkListL,ElemTypekey)

{

Node*p;

p=L->next;

while(p!

=NULL)

{

if(p->data!

=key)

p=p->next;

elsebreak;

}

returnp;

}

voidInsList(LinkListL,inti,ElemTypee)

{

Node*p,*s;

intk;

p=L;

k=0;

while(p!

=NULL&&k

{

p=p->next;

k=k+1;

}

if(k!

=i-1)

{

printf("error!

");

}

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

s->data=e;

s->next=p->next;

p->next=s;

}

voiddelLink(LinkListL,inti,ElemType*e)

{

Node*p,*r;

intk;

p=L;

k=0;

while(p->next!

=NULL&&k

{

p=p->next;

k=k+1;

}

if(k!

=i-1)

{

printf("位置不合理");

}

r=p->next;

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

*e=r->data;

free(r);

}

intListlength(LinkListL)

{

Node*p;

p=L->next;

intj=0;

while(p!

=NULL)

{

p=p->next;

j++;

}

returnj;

}

voidmain()

{

LinkListl;

Node*p;

chare;

chara;

inti,n;

printf("用头插法建立单链表,请输入链表数据,以$结束!

\n");

l=CreateFromHead();

p=l->next;

printf("输入的字符依次为:

");

while(p!

=NULL)

{

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

p=p->next;

}

printf("%c\n");

Node*p1;

printf("请输入要查找的字符的序号:

");

scanf("%d",&n);

printf("要查找的字符:

\n");

p1=search(l,n);

printf("%c",p1->data);

printf("%c\n");

printf("插入后的字符:

\n");

scanf("%c",&a);

InsList(l,3,'a');

p1=l->next;

while(p1!

=NULL)

{

printf("%c",p1->data);

p1=p1->next;

}

printf("%c\n");

delLink(l,2,&e);

p1=l->next;

printf("删除后的字符为:

\n");

while(p1!

=NULL)

{

printf("%c",p1->data);

p1=p1->next;

}

printf("%c\n");

printf("该字符串的长度为:

\n");

i=Listlength(l);

printf("%d\n",i);

printf("输入要查找的字符:

\n");

scanf("%c",&a);

p1=locate(l,a);

if(p1!

=NULL)

{

printf("true");

printf("%c\n");

}

else

{

printf("flase!

");

printf("%c\n");

}

}

4测试数据与实验结果(可以抓图粘贴)

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

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

5结果分析与实验体会

这是第一次数据结构实验,我感觉基础还是很重要的,C语言的基础很重要。

这次的数据结构试验不是很难,主要是根据书本上的例子改编而成,只要理解书本上的习题和思想,就可以解决这些问题。

可是由于一个暑假没有复习C语言,导致做实验时还是有点吃力的。

我发现数据结构这门功课对思维能力以及数学能力的要求还是很高的,所以今后还要好好学习数学,不断的提高自己的思维能力以及数学能力。

希望老师今后可以严格要求我,使我在这门功课上可以学到更多的知识,真正掌握技术。

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

当前位置:首页 > 医药卫生 > 基础医学

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

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