数据结构实验指导2012

2020-02-21 11:20

数据结构实验指导

本部分为读者设置了九个实验,读者可根据需要选做。每个实验都分为两部分内容:实验内容和实验题目,实验内容是引导读者有效地掌握相关章节的算法,而实验题目则要求读者独立完成。本书中所有结构的数据域部分均以整型数据或字符型示例,读者可根据需要自己调整实际数据类型。

一、实验要求

(1) 上实验以前应该明确当次实验的目的,阅读实验内容,写好实验题目程序清单。 (2) 实验环境可用Turboc2.0或者Turboc3.0,要求读者事先复习好编译环境的使用

方法,在实验时把主要精力放在算法设计上,而不是放在程序调试上。

(3) 实验结束要书写实验报告。

(4) 充分利用上机时间,提高上机效率。

二、实验报告的内容

实验报告要包括以下几部分: (5) 实验目的。

(6) 实验内容。

(7) 实验题目清单及必要的注释。 (8) 程序的运行结果。

(9) 实验总结(实验结果的分析,自己的经验及不足等)。

实验一 线性结构的操作

实验1.1 顺序表的插入和删除的实现

一、实验目的:

掌握线性表的顺序存储结构的实现方法,能够实现顺序表插入和删除的程序。

二、实验内容:

建立一个顺序表(有n个数据结点),输入n个数据值,并能够完成在第i个结点之前插入数据e的操作。

1进入visual c++6.0集成环境。

2书写程序清单。注意如下问题。 插入函数的实现。

插入之后线性表如何输出,插入成功与否如何表示。

3调试程序,运行,输入数据。注意应输入一些边界数据和一些非法数据以证明算法的健壮性。

三、实验题目:

参照实验内容的方法,实现顺序表的删除。 附:实验内容的程序清单。 #include \typedef int status; typedef struct {

int *elem; int length; int listsize; }Sqlist;

status Create_sq(Sqlist *L,int n) {

int i;

L->elem=(int *)malloc(100*sizeof(int)); if(!L->elem) return 0;

for(i=0;i

scanf(\输入n个数据值*/ L->length=n;

L->listsize=100; return 1; }

status Listinsert_sq(Sqlist *L,int i,int e) {

int *q,*p, *newbase;

if(i<1||i>L->length+1) return 0;

if(L->length>=L->listsize)

{

newbase=(int *)realloc(L->elem,(L->listsize+10)*sizeof(int)); if(!newbase) exit(-2); L->elem=newbase; L->listsize+=10; }

q=&(L->elem[i-1]);

for(p=&(L->elem[L->length-1]);p>=q;--p) *(p+1)=*p; *q=e; ++L->length; return 1; } main() {

Sqlist L1; int j,n,a; int i,e;

printf(\

scanf(\

if(Create_sq(&L1,n)==1) {

scanf(\输入i为插入位置,e为要插入元素的数值)*/ a=Listinsert_sq(&L1,i,e); if(a==1)

printf(\ else

printf(\

printf(\ for(i=1;i<=L1.length;i++) {

printf(\ } } }

实验1.2 单链表插入和删除的实现

一、实验目的:

掌握线性表的链式存储结构的实现方法,能够实现单链表插入和删除的程序。

二、实验内容:

建立一个带头结点的单链表(有n个数据结点),输入n个数据值,并能够完成在第i个结点之前插入数据e的操作。

1进入visual c++6.0集成环境。

2书写程序清单。注意如下问题。

头结点的使用方法。

链表建立的函数的书写和参数的传入方法。

插入函数的实现。

插入之后线性表如何输出,插入成功与否如何表示。

3调试程序,运行,输入数据。注意应输入一些边界数据和一些非法数据以证明算法的健壮性。

三、实验题目:

1参照实验内容的方法,实现带头结点的单链表的删除。

2 思考不带头结点单链表的插入和删除应该如何进行,试实现。 3 思考并实现双向链表的实现方法。

附:实验内容的程序清单。 #include \ typedef struct Lnode {

int data;

struct Lnode *next;

}Lnode,*Linklist;

void Createlist_L(Linklist *L,int n) {

Linklist p; int i;

*L=(Linklist)malloc(sizeof(Lnode)); (*L)->next=0;

for (i=n;i>0;--i) { p=(Linklist)malloc(sizeof(Lnode)); scanf(\输入n个数据值*/

p->next=(*L)->next;

(*L)->next=p; } }

int Listinsert_L(Linklist L,int i,int e)

{

Linklist p,s; int j; p=L; j=0;

while(p&&j

p=p->next;j++; }

if(!p||j>i-1) return 0;

s=(Linklist)malloc(sizeof(Lnode)); s->data=e; s->next=p->next; p->next=s; return 1; }

main() {

Linklist L1,p; int n,a; int i,e;

printf(\ scanf(\ Createlist_L(&L1,n);

printf(\ p=L1->next; while(p)

{

printf(\ p=p->next;

}

scanf(\输入i为插入位置,e为要插入元素的数值)*/ a=Listinsert_L(L1,i,e); if(a==1)

{

printf(\ p=L1->next; while(p) {

printf(\ p=p->next;

} }

else printf(\


数据结构实验指导2012.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:煤矿安全知识题库2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: