数据结构上机实验题目-20xx

时间:2024.4.21

数据结构上机实验题目

第一次上机:

1.书P19 ADT List 基本操作12个:

(1) 用顺序存储结构实现; (2)用链式存储结构实现;

2.习P18 2.21 2.22;

3.习P18 2.25 2.26; (或要求将结果置于A表中)

4.习P18 2.29 2.30;(选做题)

5.习P19 2.38;

第二次上机:

1.完成第一次上机题;

2.书P45 ADT Stack 基本操作9个:用顺序存储结构实现;

3.书P59 ADT Queue 基本操作9个:用链式存储结构实现;

4.习P26 3.32;

第三次上机:

1.完成第一、二次上机题;

2.表达式求解;

3.八皇后问题;(选做题*)

第四次上机:

1.完成第一、二、三次上机题;

2.三元组(稀疏矩阵)转置(1、2);

3.迷宫求解;(选做题)

4.随机队列模拟;(选做题)

第五次上机:

1.书P121 ADT BinaryTree 基本操作20个:用二叉链表存储结构实现;

2.非递归实现二叉树的先序、中序、后序遍历算法;

3.习P42 6.42;

4.习P43 6.45 6.48;(选做题)

5.习P43 6.49;

第六次上机:

1.实现10个字符的Huffman编码;

2.习P44 6.62;

3.习P44 6.63;(选做题)

4.习P44 6.64;(选做题)

5.完成第五次上机题;

第七次上机:

1.书P156 ADT Graph 基本操作13个:用邻接矩阵存储结构实现;

2.实现深度优先搜索算法;

3.实现广度优先搜索算法;

4.实现求解关键路径、最短路径算法;(选做题)

第八次上机:

1.实现插入、交换、选择、归并等简单排序算法;

2.实现快速排序算法;

3.实现堆排序算法;

4.实现基数排序算法;(选做题)


第二篇:数据结构上机实验十(十一


数据结构上机实验

本课程实验中已知的预定义常量和类型如下:

#define  TRUE  1

#define  FALSE  0

#define  OK  1

#define  ERROR  0

#define  INFEASIBLE  -1

#define  OVERFLOW  -2

typedef  int  Status;

实验一顺序表()

一、  实验目的

掌握顺序表的定义、存储结构及其基本操作。

二、  实验内容

已知:线性表的动态分配顺序存储结构为

#define LIST_INIT_SIZE 100

#define LISTINCREMENT 10

typedef  struct{

int  *elem;

int  length;

int  listsize;

}SqList;

在主程序中调用如下函数 实现构造线性表,在线性表中插入数值,最后输出线性表。

1. 编写函数,Status  InitList(SqList  *L) 实现构造一个空的线性表,若构造成功则返回OK,否则返回ERROR。

2. 编写函数,Status  ListInsert(SqList  *L , int i , int e) 实现在线性表L中第i个位置之前插入新的数据元素e,L的长度加1。若插入成功返回OK,否则返回ERROR。

(提示:i的合法值为:i>=1&&i<=L—>length+1)

3. 编写函数,void  ListPrint(SqList  *L)实现将线性表中的元素依次输出到屏幕上。

4.编写函数,int  Menu(),输出菜单项

请选择你要进行的操作(请输入1-4中的任一个数字):

输入  1:InitList

2:ListInsert

3:ListPrint

4:Exit

实验二  顺序表(二)

一、  实验目的

掌握顺序表的定义、存储结构及其基本操作。

二、  实验内容

在实验一的基础上,继续完成如下实验内容。

1.编写函数,Status  ListDelete(Splist *L ,int i ,int *e),实现删除L的第i个数据元素,并用e返回其值,L的长度减1。删除成功返回OK(1),否则返回ERROR(0)。

(提示:i的合法值为:i>=1&&i<=L—>length)

2.编写函数 Status GetElem(SqList *L,int  i,int *e),实现用e将线性表中第i个数据元素返回。若返回成功则函数返回OK(1),否则返回ERROR(0)。(提示:i的合法值为:i>=1&&i<=L—>length)

3.编写函数,int  Menu(),输出菜单项

请选择你要进行的操作(请输入1-6中的任一个数字):

输入1: InitList

2: ListInsert

3: ListPrint

4: ListDelete

5: GetElem

6: Exit

实验三顺序表(三)

一、实验目的

掌握顺序表的定义、存储结构及其基本操作。

二、实验内容

在实验二的基础上,继续完成如下实验内容。

在main函数中分别调用initList和ListInsert函数生成2个按值非递减有序的线性表La和Lb,然后再调用MergeList函数完成将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列。最后输出LC。

1.编写函数,void  MergeList(SqList *La, SqList *Lb,SqList  *Lc)。(参考教材P21)

2.编写函数,int  Menu(),输出菜单项

请选择你要进行的操作(请输入1-7中的任一个数字):

输入1:InitList

2:ListInsert

3:ListPrint

4:ListDelete

5:GetElem

6:Merge

7:Exit

实验四单链表(一)

一、实验目的

掌握单链表的定义、存储结构及其基本操作。

二、实验内容 

   已知线性表的单链表存储结构为

typedef  struct  LNode{

int  data;

sturct  LNode  *next;

}LNode ,*LinkList

在主程序中调用如下函数 实现单链表的建立,在单链表中中插入结点,最后输出单链表。

1. 编写函数,void CreateList(LinkList  *L,int n)  动态生成一个单链表。(L为单链表的头指针,它指向表中的第一个结点。)

2. 编写函数,Status  ListInsert(LinkList  L , int i , int e) 实现在单链表L中第i个位置之前插入新的数据元素e。若插入成功返回OK,否则返回ERROR。

3. 编写函数,void  ListPrint(LinkList  L)实现将单链表的元素依次输出到屏幕上。

4.编写函数,int  Menu(),输出菜单项

请选择你要进行的操作(请输入1-4中的任一个数字):

输入  1:CreateList

2:ListInsert

3:ListPrint

4:Exit

实验五单链表(二)

一、实验目的

掌握单链表的定义、存储结构及其基本操作。

二、实验内容 

   在实验四的基础上,继续完成如下实验内容,在已存在的单链表中删除结点,将2个有序链表合并成一个有序链表。

1. 编写函数,void  ListDelete(LinkList  L,int i,int * e)  在单链表L中删除第i个元素,并由e返回其值。若删除成功返回OK(1),否则返回ERROR(0)。

2. 编写函数,void  Merge(LinkList  La,LinkList  Lb,LinkList  *Lc),完成已知两个按值非递减有序排列的单链表La和Lb,归并La和Lb得到一个新的单链表Lc,Lc的元素也按值非递减有序排列。(参考教材P31)

3.改写int Menu(),输出菜单项

请选择你要进行的操作(请输入1-6中的任一个数字):

输入  1:CreateList

2:ListInsert

3:ListPrint

4:ListDelete

5:Merge

6:Exit

实验六栈(一)

一、实验目的

掌握栈的定义、栈的顺序存储结构及其基本操作。

二、实验内容 

   已知栈的顺序存储表示

#define  STACK_INIT_SIZE  100

#define  STACKINCREMENT  10

typedef  struct

{int  *base;

 int  *top;

 int  stacksize;

}SqStack;

在主程序中调用如下函数实现栈的初始化,在栈中插入数值,最后输出栈中元素。

1. 编写函数,Status  InitStack(SqStack  *S) ,构造一个空栈,成功返回OK,否则返回ERROR。

2. 编写函数,Status  Push(SqStack  *S,int e),在栈顶中插入元素e,成功返回OK,否则返回ERROR。

4. 编写函数,void  StackPrint(SqStack  S),实现在屏幕上输出栈中的元素。

5. 编写函数,int  Menu(),输出菜单项

请选择你要进行的操作(请输入1-5中的任一个数字):

输入  1:InitStack

2:Push

3:StackPrint

4:Exit

实验七栈(二)

一、实验目的
掌握栈的定义、栈的顺序存储结构及其基本操作。
二、实验内容 
       在实验六的基础上,继续完成如下实验内容,

1. 编写函数,Status  Gettop(SqStack  S,int  *e),实现若栈不空,则用e返回S的栈顶元素,并返回OK,否则返回ERROR。
2. 编写函数,Status  Pop(SqStack  *S, int* e),实现若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK,否则返回ERROR。
3. 编写函数,Status  Matching(char exp[ ]),实现判断S栈中所存储的表达式中的两种括号:圆括号和方括号是否匹配。如果匹配,返回OK,否则返回ERROR。(参考教材P49)
4. 改写函数,int  Menu(),输出菜单项
请选择你要进行的操作(请输入1-7中的任一个数字):
输入  1:InitStack
         2:Push
         3:StackPrint
         4:Gettop
         5:Pop
         6:Matching
         7:Exit

实验八队列

一、实验目的

掌握队列的定义、队列的链式存储结构及其基本操作。

二、实验内容 

已知队列的链式存储表示

typedef  struct  QNode

{int  data;

 struct  QNode  *next;

 }QNode,*QueuePtr;

typedef struct

{ QueuePtr  front;

  QueuePtr  rear;  

}LinkQueue;

1. 编写函数,Status  InitQueue(LinkQueue  *Q),构造一个空队列,成功返回OK,否则返回ERROR。

2. 编写函数,Status  DestroyQueue(LinkQueue  *Q),实现销毁队列Q,成功返回OK,否则返回ERROR。

3. 编写函数,Status  EnQueue(LinkQueue *Q,int e),实现插入元素e为Q的队尾元素,成功返回OK,否则返回ERROR。

4. 编写函数,Status  DeQueue(LinkQueue *Q,int *e),实现若队列不空,则删除Q的队头元素,用e返回其值。删除成功返回OK,否则返回ERROR。

5. 编写函数,int  Menu(),输出菜单项

请选择你要进行的操作(请输入1-5中的任一个数字):

输入  1:InitQueue

2:DestroyQueue

3:EnQueue

4:DeQueue

5:Exit

实验九  数组

一、实验目的

掌握稀疏矩阵的三元组顺序表存储表示及其基本操作。

二、实验内容

已知稀疏矩阵三元组顺序存储表示为

#define MAXSIZE  1000

typedef struct

{int  i,j;

Int e

}Triple;

typedef struct

{

Triple data[MAZSIZE+1];

int mu,nu,tu;

}TSMatrix

1.编写函数,Status  AssignSMatrix(TSMatrix  *M),实现输入非零元生成一个稀疏矩阵。稀疏矩阵如下所示。

­

2.编写函数,void  PrintSMatrix(TSMatrix  M),实现将稀疏矩阵输出在屏幕上,输出的样式如下:

3.编写函数,Status TransposeSMatrix(TSMatrix M ,TSMatrix *T),实现采用三元组表存储表示,求稀疏矩阵M的转置矩阵T,在main中输出T。

4.编写函数,int  Menu(),输出菜单项

请选择你要进行的操作(请输入1-4中的任一个数字):

输入         1:AssignSMatrix

2:PrintSMatrix

3:TransposeSMatrix

4:Exit

实验十  查找

一、实验目的

掌握静态查找表的顺序存储结构及其查找方法。

二、实验内容 

   已知静态查找表的顺序存储结构为

typedef  int  KeyType;

typedef struct

{Keytype  key

}ElemType;

typedef  struct

{  ElemType  *elem;

   int  length;

}SSTable;

1. 编写函数,Status Creat_ST(SSTable *ST),实现构造一个顺序查找表。(查找表的长度在函数中由用户输入,然后根据用户输入的长度申请存储空间,然后逐个输入数据元素生成顺序查找表。)

提示:查找表中0号单元留空。

2. 编写函数,void  Print_ST(SSTable  ST), 实现将顺序表ST中元素依次输出在屏幕上

3. 编写函数,int  Search_Seq (SSTable  ST ,KeyType  key), 实现在顺序表ST中顺序查找其关键字等于key的数据元素。若找到,则函数值为该元素在表中的位置,否则为0。

4. 编写函数,int  Search_Bin(SSTable ST , KeyType  key),实现在有序表ST中折半查找其关键字等于key的数据元素。若找到,则函数值为该元素在表中的位置,否则为0。

5. 改写函数,int  Menu(),输出菜单项

请选择你要进行的操作(请输入1-5中的任一个数字):

输入  1: Creat_ST

         2: Print_ST

         3: Search_Seq

         4: Search_Bin

         5: Exit

实验十一  排序

一、实验目的

掌握顺序表的排序方法及基本操作。

二、实验内容 

   已知顺序表的存储结构为

#define MAXSIZE 100

typedef  int  KeyType;

typedef struct

{Keytype  key

}RedType;

typedef  struct

{  RedType  r[MAXSIZE+1];

   int  length;

}SqList;

1. 编写函数,Status Creat_SL(SqList  *L),实现逐个输入数据元素生成顺序表。

提示:顺序表中0号单元留空。

2. 编写函数,void  Print_SL(SqList  L), 实现将顺序表L中元素依次输出在屏幕上

3. 编写函数,void  InsertSort (SqList  *L ), 实现对顺序表L做直接插入排序。

4. 编写函数,void  BInsertSort(SqList *L ),实现对顺序表L做折半插入排序。

5. 编写函数,void  SelectSort(SqList *L),实现对顺序表L做简单选择排序。

6. 改写函数,int  Menu(),输出菜单项

请选择你要进行的操作(请输入1-6中的任一个数字):

输入  1: Creat_SL

         2: Print_SL

     3.   InsertSort

         4: BInsertSort

         5: SelectSort

         6: Exit

更多相关推荐:
数据结构上机实验报告

实验一线性表的基本操作实验目的学习掌握线性表的顺序存储结构链式存储结构的设计与操作对顺序表建立插入删除的基本操作对单链表建立插入删除的基本操作算法实验内容1顺序表的实践1建立4个元素的顺序表ssqlist123...

数据结构上机实验答案

数据结构实验指导书答案实验一1请编写函数intfunintaintb函数的功能是判断两个指针a和b所指存储单元的值的符号是否相同若相同函数返回1否则返回0这两个存储单元中的值都不为0在主函数中输入2个整数调用函...

数据结构上机实验报告

空间数据结构基础上机实验报告20xx姓名班级地信121学号07122857环境与测绘学院级实验报告1C面向对象程序设计范例1二维坐标点point的C描述实验目的用面向对象的方法定义一个简单的抽象数据结构本例实验...

数据结构第一次上机实验报告

数据结构第一次上机实验报告线性表实验要求1实现顺序表结构的创建插入删除查找等操作2利用上述顺序表操作实现如下程序建立两个顺序表表示的集合集合中无重复的元素并求这样的两个集合的并交和源程序C实现visualstu...

数据结构上机实验报告

计算机科学与技术学院数据结构教程实验报告20xx20xx学年第2学期学生姓名学生专业学生班级学生学号20xx65实验报告一设计人员相关信息姓名学号班级设计日期20xx年6月5日上机环境VisualC60二程序设...

数据结构上机报告实验一

数据结构上机报告年月日姓名学号同组成员1实验题目及要求实验一编写一个程序实现顺序表的各种基本运算并在此基础上完成以下功能1初始化顺序表2依次采用尾插入法插入abcde元素3输出顺序表L4输出顺序表L的长度5判断...

数据结构实验报告格式1

数据结构实验报告格式实验1线性表的基本操作一实验目的1掌握使用VC上机调试线性表的基本方法2掌握线性表的基本操作插入删除查找等运算在顺序和链式存储结构上的实现二实验内容线性表的基本操作的实现三实验要求1认真阅读...

数据结构上机实验报告

数据结构上机实验报告1实习题目问题描述假设某银行有四个窗口对外接待客户从早晨银行开门起不断有客户进入银行由于每个窗口在某个时刻只能接待一个客户因此在客户人数众多时需在每个窗口前顺次排队对于刚进入银行的客户如果某...

数据结构上机实验指导书_胡国玲

计算机系第一部分算法与数据结构课程实验概述一实验目的算法与数据结构是计算机专业的主干课程和必修课程之一其目的是让大家学习分析和研究数据对象特征掌握数据组织方法和计算机的表示方法以便选择合适的数据逻辑结构和存储结...

北工大数据结构上机实验报告1

实验一报告姓名学号完成日期20xx年4月7日题目设有n个人坐在一个圆桌周围现从第s个人开始报数数到第m的人出列然后从出列的下一个人重新开始报数数到第m的人又出列如此反复直到所有的人全部出列为止Josephus问...

数据结构上机实验20xx_blue

计算机软件技术基础20xx实验报告I数据结构031020xxx张三数据结构上机实验题20xx报告要求简述每一部分的对象目的和要求画出算法程序的流程图说明程序的数据输入要求附源程序清单实学号姓名如DS20xx03...

数据结构上机实验报告8

广东工业大学实验报告自动化学院网络工程专业班学号姓名何宇航成绩评定教师签名许亮一实验目的文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置试写出一个实现这一目标的文字统计系统成为文学研究助手二实验内容...

数据结构上机实验报告(39篇)