《数据结构实验与实训教程第3版》课件.docx

上传人:b****2 文档编号:2257750 上传时间:2022-10-28 格式:DOCX 页数:110 大小:68.08KB
下载 相关 举报
《数据结构实验与实训教程第3版》课件.docx_第1页
第1页 / 共110页
《数据结构实验与实训教程第3版》课件.docx_第2页
第2页 / 共110页
《数据结构实验与实训教程第3版》课件.docx_第3页
第3页 / 共110页
《数据结构实验与实训教程第3版》课件.docx_第4页
第4页 / 共110页
《数据结构实验与实训教程第3版》课件.docx_第5页
第5页 / 共110页
点击查看更多>>
下载资源
资源描述

《数据结构实验与实训教程第3版》课件.docx

《《数据结构实验与实训教程第3版》课件.docx》由会员分享,可在线阅读,更多相关《《数据结构实验与实训教程第3版》课件.docx(110页珍藏版)》请在冰豆网上搜索。

《数据结构实验与实训教程第3版》课件.docx

《数据结构实验与实训教程第3版》课件

目录

第一部分预备知识1

预备知识1

预备知识实验2

第二部分基础实验4

实验1线性表的基本操作4

实验2链表的基本操作9

实验3栈的基本操作15

实验4队列的基本操作22

实验5数组的基本操作32

实验6字符串的基本操作36

实验7二叉树的基本操作41

实验8树的遍历和哈夫曼树46

实验9图的基本操作53

实验10排序59

实验11查找64

第三部分课程设计实验69

实验1航空客运订票系统69

实验2汉诺塔游戏程序75

实验3全屏幕编辑程序设计79

实验4旅游路线安排模拟系统90

实验6最小生成树kruskal算法93

第一部分预备知识

预备知识

例1.1

#include

intsumabc(inta,intb,intc)/*求三个整数之和*/

{ints;

a=b+c;

s=a+b+c;

returns;

}

voiddisplayLine(void)

{printf(”----------------------\n“);

}

voidmain()

{intx,y,z,sabc;

x=y=z=8;

display();/*画一条线*/

printf(“\nsum=%d”,sumabc(x,y,z));/*在输出语句中直接调用函数sumabc()*/

printf(“\n%6d%6d%6d”,x,y,z);

display();/*画一条线*/

x=2;y=4;z=6;

sabc=sumabc(x,y,z);/*在赋值语句中调用函数sumabc()*/

printf(“\n“sum=%d”,sabc);

printf(“\n%6d%6d%6d”,x,y,z);

display();/*画一条线*/

}

例1.2

intsumabc(int*a,intb,intc)

{

ints;

*a=b+c;

s=*a+b+c;

returns;

}

预备知识实验

intmain()

{//在main函数中调用上述声明的函数

intn;//记录个数

STUDENTstu[MAXSIZE;//顺序存储结构,方法一静态一维数组。

/*

顺序存储结构,方法二动态一维数组,用malloc函数分配如下:

STUDENT*stu;

stu=(STUDENT*)malloc(sizeof(STUDENT)*MAXSIZE);//内存空间的分配

注意:

分配空间可用malloc()函数,释放空间用free()函数,如free(stu);

*/

intindex;

printf("\n请输入学生记录个数n=");scanf(%d”,&n);

InputStu(stu,n);//预先处理输入,建表

while

(1)//永真循环,重复显示菜单,直至退出

{

printf("\n**********************学生信息管理主菜单**********************\n");

printf("\t1.显示学生信息\n");

printf("\t2.查找学生信息\n");

printf("\t3.修改学生信息\n");

printf("\t4.添加学生信息\n");

printf("\t5.退出\n\n");

printf("\t\t请选择(1~5):

");

scanf("%d",&index);

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

switch(index){

case1:

OutputStu(stu,n);break;

case2:

SearchStu(stu,n);break;

case3:

UpdateStu(stu,n);break;

case4:

AppendStu(stu,&n);break;

case5:

return0;

default:

printf("\n输入有误,请重新输入!

\n");

}//switch

}//while

(1)

}//main

第二部分基础实验

实验1线性表的基本操作

四、参考程序

程序1:

题1线性表基本操作函数

#include

#include

#include

structLinearList/*定义线性表结构*/

{

int*list;/*存线性表元素*/

intsize;/*存线性表长度*/

intMaxSize;/*存list数组元素个数*/

};

typedefstructLinearListLIST;

voidInitList(LIST*L,intms)/*初始化线性表*/

{

if((L->list=1)==NULL){

printf("内存申请错误!

\n");

exit

(1);

}

2

L->MaxSize=ms;

}

intInsertList(LIST*L,intitem,intrc)

/*item:

记录值rc:

插入位置*/

{

inti;

if(3)/*线性表已满*/

return-1;

if(rc<0)/*插入位置为0-->L->size*/

rc=0;

if(4)

rc=L->size;

for(i=L->size-1;i>=rc;i--)/*将线性表元素后移*/

5

L->list[rc]=item;

L->size++;

return0;

}

voidOutputList(LIST*L)/*输出线性表元素*/

{

inti;

for(i=0;6i++)

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

printf("\n");

}

intFindList(LIST*L,intitem)/*返回>=0为元素位置-1没找到*/

{

inti;

for(i=0;isize;i++)

if(7)/*找到相同的元素,返回位置*/

returni;

return-1;/*没找到*/

}

intDeleteList1(LIST*L,intitem)

/*删除指定元素值的线性表记录,返回>=0:

删除成功*/

{

inti,n;

for(i=0;isize;i++)

if(item==L->list[i])/*找到相同的元素*/

break;

if(isize){

for(n=i;nsize-1;n++)

L->list[n]=L->list[n+1];

L->size--;

returni;

}

return-1;

}

intDeleteList2(LISTL,intrc)/*删除指定位置的线性表记录*/

{

8/*编写删除指定位置的线性表记录子程序*/

}

程序2:

题2

voidmain()

{

LISTLL;

inti,r;

printf("listaddr=%p\tsize=%d\tMaxSize=%d\n",LL.list,LL.size,LL.MaxSize);

InitList(&LL,100);

printf("listaddr=%p\tsize=%d\tMaxSize=%d\n",LL.list,LL.size,LL.MaxSize);

while

(1)

{

printf("请输入元素值,输入0结束插入操作:

");

fflush(stdin);/*清空标准输入缓冲区*/

scanf("%d",&i);

if

(1)

break;

printf("请输入插入位置:

");

scanf("%d",&r);

InsertList

(2);

printf("线性表为:

");

3

}

while

(1)

{

printf("请输入查找元素值,输入0结束查找操作:

");

fflush(stdin);/*清空标准输入缓冲区*/

scanf("%d",&i);

if(i==0)

break;

r=4

if(r<0)

printf("没找到\n");

else

printf("有符合条件的元素,位置为:

%d\n",r+1);

}

while

(1)

{

printf("请输入删除元素值,输入0结束查找操作:

");

fflush(stdin);/*清空标准输入缓冲区*/

scanf("%d",&i);

if(i==0)

break;

r=5

if(r<0)

printf("没找到\n");

else{

printf("有符合条件的元素,位置为:

%d\n线性表为:

",r+1);

OutputList(&LL);

}

}

while

(1)

{

printf("请输入删除元素位置,输入0结束查找操作:

");

fflush(stdin);/*清空标准输入缓冲区*/

scanf("%d",&r);

if(r==0)

break;

i=6

if(i<0)

printf("位置越界\n");

else{

printf("线性表为:

");

OutputList(&LL);

}

}

}

程序4:

题4

#defineX10

#defineY30

#defineN20

intA[N]={2,5,15,30,1,40,17,50,9,21,32,8,41,22,49,31,33,18,80,5};

#include

voiddel(int*A,int*n,intx,inty)

{

inti,j;

for(i=j=0;i<*n;i++)

if(A[i]>y||A[i]

1;

2=j;

}

voidoutput(int*A,intn)

{

inti

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

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

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