数据结构的基本操作问题,求代码.要能调试成功的哦.

miui 发布于 2012/05/06 13:07
阅读 1K+
收藏 0

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

实验一 线性表操作

实验目的

1、 会定义线性表的顺序存储类型。

2、 熟悉CC++程序的基本结构,掌握程序中的用户头文件、实现文件和主文件之间的相互关系及各自的作用。

3、 熟悉对线性表的一些基本操作和具体的函数定义。

4、 熟悉TurboCVC操作环境的使用以及多文件程序的输入、编辑、调试和运行的全过程。

实验要求

1、 认真阅读和掌握本实验内容所给的全部程序。

2、 从本实验内容中任选一个程序上机运行。

3、 保存和打印出程序运行结果,并结合程序进行分析。

按照你对线性表操作的需要,重新改写主文件并运行,打印出文件清单和运行的结果。

实验内容

程序1:

该程序的功能是对元素类型为整型的顺序存储的线性表进行一些操作。该程序包含三个文件,一个为头文件,用来存储定义的线性表结构类型以及对线性表进行的各种操作的函数声明;第二个为线性表操作的实现文件,用来存储每一种线性表操作的具体函数定义;第三种为主文件,用来定义线性表和调用线性表的一些操作,实现对给定线性表的具体运算。整个程序如下:

//头文件linearlist1.h

//定义ElemTypeint类型

typedef int ElemType;

//线性表顺序存储类型

struct LinearList

{

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

int size; //存线性表长度

int MaxSize; //list数组长度

};

//初始化线性表

void InitList(LinearList& L, int ms);

//清空线性表

void ClearList(LinearList& L);

//求线性表长度

int ListSize(LinearList& L);

//检查线性表是否为空

bool ListEmpty(LinearList& L);

//检查线性表是否为满

bool ListFull(LinearList& L);

//遍历线性表

void TraverList(LinearList& L);

//从线性表中查找元素

bool FindList(LinearList& L, ElemType& item);

//更新线性表中的给定元素

bool UpdateList(LinearList& L, const ElemType& item);

//向线性表插入元素

bool InsertList(LinearList& L, const ElemType& item, int mark);

//从线性表中删除元素

bool DeleteList(LinearList& L, ElemType& item, int mark);

//对线性表进行有序输出

void OrderOutputList(LinearList& L, int mark);

实验二 单链表操作

实验目的

1、 会定义单链表的结点类型。

2、 悉对单链表的一些基本操作和具体的函数定义。

3、 了解和掌握单链表的类定义以及成员函数的定义与调用格式。

4、 帮助学生掌握学会在实践中利用线性链表方式完成对一些具有前后相继特征的数据结构的具体操作

实验要求

1、 认真阅读和掌握本实验内容所给的全部程序。

2、 从本实验内容中任选一个程序上机运行。

3、 保存和打印出程序运行结果,并结合程序进行分析。

4、 按照你对单链表操作的需要,重新改写主文件并运行,打印出文件清单和运行的结果。当然也可以根据你的需要改写或增删单链表操作的函数。

5、 在熟悉了本试验所给的示例程序后,自己完成后面两道题目的编写

实验内容

下面三个程序都是用来实现单链表的定义和操作,每个程序均由头文件、实现文件和主文件。第一个程序中的单链表结点为结构类型,结点的值为整型;第二个程序中的单链表结点同样为结构类型,结点的值为student结构类型;第三个程序中的单链表采用类的定义,操作函数为类中的成员函数,单链表中每个结点的值为整型。在理解了上面三个示例程序后编写下面两个程序并上机调试通过。

1、 已知一指向某表头结点的单链表的头指针,把单链表的元素就地逆置,显示逆转前后的结果。

2、 在线性链表中插入一个元素到第一个元素值为X的元素之前,X的值让用户输入,显示输出结果。

实验三 栈和队列

实验目的

1、 会定义栈的定义和栈的基本操作。

2、 熟悉每一种栈的一般函数实现和成员函数实现。

3、 熟悉把中缀表达式转换为后缀表达式的算法。

4、 熟悉进行后缀表达式求值的算法。

5、 理解利用栈实现递归的基本思想

实验要求

1、 认真阅读和掌握本实验内容所给的全部程序。

2、 从本实验内容的前两个程序中任选一个程序上机运行。

3、 保存和打印出程序运行结果,并结合程序进行分析。

4、 重新编写一个主程序文件,能够求出从键盘上输入的若干个中缀表达式的值,直到输入一个作为结束标记的特定字符串为止。打印出主程序文件清单和运行的结果。

5、自己编写程序利用递归方式解决后面两个递归问题

实验内容

本实验内容包含四个程序,前两个都用来进行算术表达式的计算。第一个程序采用结构来定义栈,采用普通函数来定义栈的操作,它们被分别用头文件和实现文件保存起来。另外,该程序分别采用相应的文件来进行中缀表达式转换为后缀表达式的运算和后缀表达式求值的运算。由于在中缀表达式的算法中需要使用元素类型为字符的运算符栈,而在后缀表达式求值的算法中需要使用元素类型为实数字符的操作数栈,所以在各自的文件中应分别包含只属于自己的元素类型定义(通过typedef语句实现)、栈定义和每个操作函数的定义。在每个C++程序文件中,函数定义外的类型定义和常量定义,其作用域只局限于所在文件,若在每个普通函数定义的开始添加static保留字,则规定了该函数具有文件作用域,否则为全局作用域。第二个程序采用类定义栈,采用成员函数实现栈的操作,同样分别采用相应的文件来进行中缀表达式的运算和后缀表达式求值的运算。一个类中的每个成员函数,其作用域只局限于所在的文件,所以虽然在第二个程序中的不同文件中同时使用了栈类的成员函数的定义,但在连接过程中也不会出现重复定义的错误。另两个程序是利用栈实验递归的实验,分别是要求学生编写求二阶Fibonacci数列的递归算法和求汉诺塔的递归算法

程序1

1.linearStack1.h头文件

struct Stack {

ElemType* stack;

short top;

short StackMaxSize;

};

//初始化栈

static void InitStack(Stack& S, int ms);

//清空栈

static void ClearStack(Stack& S);

//删除栈

static void DeleteStack(Stack& S);

//检查栈是否为空

static bool StackEmpty(Stack& S);

//读取栈顶元素

static ElemType Peek(Stack& S);

//向栈中插入元素

static void Push(Stack& S, const ElemType& item);

//从栈中删除元素

static ElemType Pop(Stack& S);

//检查栈是否已满

static bool StackFull(Stack& S);

实验五 二叉树操作

实验目的

1、 熟悉二叉树的结构和对二叉树的基本操作。

2、 掌握对二叉树每一种操作的具体实现。

3、 学会利用递归方法编写对二叉树这种递归数据结构进行处理的算法。

实验要求

1、 阅读和掌握本实验内容所给的全部程序。

2、 从本实验内容中任选一个程序上机运行。

3、 保存和打印出程序运行结果,并结合程序进行分析。

4、 重新编写一个主程序文件,打印出程序清单和运行的结果。

实验内容

下面给出两个程序,它们都是用来实现对二叉树的操作。第一个程序采用结构定义二叉树结点的类型,采用普通函数对二叉树进行每一种操作的处理;第二个程序采用类定义二叉树的类型,采用成员函数实现二叉树的每一种操作。

程序1:

//定义二叉树结点结构和操作的头文件btree1.h

//定义二叉树结点值的类型为字符型

typedef char ElemType;

//定义二叉树结点类型

struct BTreeNode {

ElemType data;

BTreeNode* left;

BTreeNode* right;

};

//初始化二叉树,即把树根指针置空

void InitBTree(BTreeNode*& BT);

//根据存于字符数组a的二叉树广义表建立对应的二叉树存储结构

void CreateBTree(BTreeNode*& BT, char* a);

//判断二叉树是否为空

bool BTreeEmpty(BTreeNode* BT);

//按任一种遍历次序输出二叉树中的所有结点

void TraverseBTree(BTreeNode* BT, int mark);

//求二叉树的深度

int BTreeDepth(BTreeNode* BT);

//求二叉树中所有结点数

int BTreeCount(BTreeNode* BT);

//求二叉树中所有叶子结点数

int BTreeLeafCount(BTreeNode* BT);

//按照二叉树的一种表示方法输出整个二叉树

void PrintBTree(BTreeNode* BT);

//清除二叉树,使之变为一棵空树

void ClearBTree(BTreeNode*& BT);

加载中
0
杨庆荣
杨庆荣
在数据结构这本书上就有呀,你完全可以抄进去。
0
leo108
leo108
搞笑,你当这里是帮你做作业的地方么
0
hulubo
hulubo

这看起来像数据结构的课设啊,你在这求还不如求同学抄一个改改呢

0
Van_chan
Van_chan
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
张亦俊
张亦俊

同学,这边是技术社区,不是某度娘的知道,不是用来抄代码的地方。

你可以把技术问题拿来讨论一下,那至少也希望看到你自己的描述。

你这种把实验报告模板贴出来,问题本身不集中,太泛,这就让人没办法回答。

而且,这些知识都是课本有的,看看书的话总会有帮助的,书看不懂再来问,一定有人会来回答的。

0
m
miui
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
中山野鬼
中山野鬼
我去面试,也没人敢对我说这样的要求。。。。按照。什么什么,实现C代码,而且调试成功。
Andre.Z
Andre.Z
这种就是典型的伸手党啊,坚决砍之。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部