数据结构实验报告Word文档下载推荐.docx

上传人:b****2 文档编号:15380477 上传时间:2022-10-29 格式:DOCX 页数:17 大小:236.73KB
下载 相关 举报
数据结构实验报告Word文档下载推荐.docx_第1页
第1页 / 共17页
数据结构实验报告Word文档下载推荐.docx_第2页
第2页 / 共17页
数据结构实验报告Word文档下载推荐.docx_第3页
第3页 / 共17页
数据结构实验报告Word文档下载推荐.docx_第4页
第4页 / 共17页
数据结构实验报告Word文档下载推荐.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数据结构实验报告Word文档下载推荐.docx

《数据结构实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。

数据结构实验报告Word文档下载推荐.docx

三.实验前的准备

●了解线性表的顺序和链式存储结构。

●理解并定义线性表的存储结构,线性表的运算。

三.实验要求及实验软硬件环境

【基本要求】

●理解并定义线性表的存储结构。

●掌握线性表的基本操作:

【实验组织方式】

●个人实验

【实验条件】

●Windows操作系统

四.实验过程及程序清单

1、线性表的基本操作的程序代码:

#include"

stdio.h"

malloc.h"

process.h"

string.h"

#defineOK1

#defineERROR0

#defineLIST_INIT_SIZE100

#defineLISTINCREMENT10

#defineTRUE1

#defineFALSE0

#defineINFEASIBLE-1

#defineOVERFLOW-2

typedefintStatus;

typedefintElemType;

typedefstruct{

ElemType*elem;

intlength;

intlistsize;

}List;

StatusInitList(List&

L){

//构造一个空的线性表。

L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));

L.length=0;

L.listsize=LIST_INIT_SIZE;

printf("

初始化一个线性表\n\n"

);

returnOK;

}

StatusDestroyList(List&

if(L.elem)free(L.elem);

//释放分配的存储空间

L.elem=NULL;

L.length=0;

L.listsize=0;

销毁表!

\n\n"

StatusGetElem(ListL,inti,ElemType&

e){

if(i<

1||i>

L.length+1)returnERROR;

//i值不合法

e=L.elem[i-1];

}

StatusListInsert(List&

L,inti,ElemTypee){

ElemType*q,*p,*newbase;

if(i<

if(L.length>

=L.listsize){

newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));

if(!

newbase)return(OVERFLOW);

L.elem=newbase;

L.listsize+=LISTINCREMENT;

q=&

(L.elem[i-1]);

for(p=&

(L.elem[L.length-1]);

p>

=q;

--p)*(p+1)=*p;

*q=e;

++L.length;

}//插入数据

StatusListDelete(List&

L,inti,ElemType&

ElemType*p,*q;

if((i<

1)||(i>

L.length))returnERROR;

p=&

e=*p;

q=(L.elem+L.length-1);

for(++p;

p<

++p)*(p-1)=*p;

--L.length;

}//删除数据

voidmain(){

ListL;

ElemTypee1,e2;

Statusk;

inti,a,b,c,d,e,n,j;

//初始化线性表L

InitList(L);

初始化表元素个数:

"

scanf("

%d"

&

n);

//往线性表插入数据

for(i=1;

i<

=n;

i++){

输入所插入的数据:

a);

ListInsert(L,i,a);

//将表L中的第b个元素的值赋给e

for(j=1;

j<

2;

){

请选择您要进行的操作:

1:

插入2:

取元素3:

删除4:

销毁\n"

c);

if(c==1){

printf("

请输入插入元素的位置及元素:

scanf("

%d%d"

d,&

e);

ListInsert(L,d,e);

线性表元素总数为%d\n"

n+1);

n++;

for(i=1;

printf("

%d\n"

L.elem[i-1]);

}

if(c==2){

输入要取数的位数:

b);

if(b<

1||b>

L.length){

输入错误!

!

\n"

continue;

GetElem(L,b,e1);

if(k=ERROR)

读取数据失败,"

b);

else

第%d个元素的值为%d\n"

b,e1);

//删除元素

if(c==3){

输入删除第几个数:

if(c<

1||c>

L.length)

元素不存在\n"

k=ListDelete(L,c,e2);

//删除第c个数据

if(k==ERROR)//表中不存在第c个数据

删除第%d个元素失败\n"

c);

else//表中存在第c个数据,删除成功,其值赋给e2

删除第%d个元素成功,其值为%d\n\n"

c,e2);

//销毁表

if(c==4){

j++;

DestroyList(L);

销毁L后,L.length=%d,L.listsize=%d,L.elem=%u\n\n"

L.length,L.listsize,L.elem);

2、链式存储结构的基本操作的程序代码:

#include<

stdio.h>

stdlib.h>

typedefstructstudent{

intnumber;

structstudent*next;

charname[10];

}student;

typedefstructstudent*stud;

voidCreateList();

studhead;

voiddetele();

voidinsertList();

voidprint();

voiddestorylist();

voidreverse();

intmain(intargc,char*argv[]){

intc=0;

while(c!

=-1){

\t\t链式存储结构的基本操作\n\n"

\t1.创建链表\n\t2.插入元素\n\t3.删除单个元素\n\t4.销毁元素\n\t5.翻转链表\n\t-1.退出\n"

请选择操作:

switch(c){

case1:

CreateList();

break;

case2:

insertList();

case3:

detele();

case4:

destorylist();

case5:

reverse();

default:

exit(0);

break;

system("

PAUSE"

return0;

/*创建链表*/

voidCreateList(){

studpointer;

studNew;

head=(stud)malloc(sizeof(student));

if(head==NULL)

{

Memorymallocfailture!

exit(-1);

pointer=head;

inti=0;

//循环读入

while(i++<

3){

New=(stud)malloc(sizeof(student));

if(New==NULL){

pleaseinputthenumber:

New->

number);

pleaseinputthename:

%s"

New->

name);

New->

next=NULL;

pointer->

next=New;

pointer=New;

print();

/*插入链表*/

voidinsertList(){

inttag;

intpos;

请选择插入方式:

0.头部1.尾部2.中间:

pos);

if(pos==2){

\n请选择欲插入的位置:

tag);

pleaseinputthenu

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

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1