数据结构练习题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.链表结点类和链表类定义:

template

struct Node

{ T data;

Node *next; //此处也可以省略

};

template

class LinkList

{ public:

LinkList( ); //建立只有头结点的空链表

LinkList(T a[ ], int n); //建立有n个元素的单链表

~LinkList(); //析构函数

void Insert(int i, T x); //在单链表中第i个位置插入元素值为x的结点 T Delete(int i); //在单链表中删除第i个结点

void PrintList( ); //遍历单链表,按序号依次输出各元素private: Node *first; //单链表的头指针

};

2.二叉树类基本定义:

template

struct BiNode //二叉树的结点结构

{ T data;

BiNode *lchild, *rchild;

};

template

class BiTree

{public:

BiTree( ); //构造函数,初始化一棵二叉树,其前序序列由键盘输入 ~BiTree(void); //析构函数,释放二叉链表中各结点的存储空间BiNode* Getroot(); //获得指向根结点的指针

void PreOrder(BiNode *root); //前序遍历二叉树

void InOrder(BiNode *root); //中序遍历二叉树

void PostOrder(BiNode *root); //后序遍历二叉树

void LeverOrder(BiNode *root); //层序遍历二叉树

private:

BiNode *root; //指向根结点的头指针

BiNode *Creat( ); //有参构造函数调用

void Release(BiNode *root); //析构函数调用

};

3.图的邻接表类定义:

const int MaxSize=12;

struct ArcNode //定义边表结点

{ int adjvex; //邻接点域

ArcNode *next; //指向下一个边结点的指针

};

template

struct VertexNode //定义顶点表结点

{ T vertex; //顶点的名称

ArcNode *firstedge; //边表的头指针

};

template

class ALGraph

{public:

ALGraph(T a[ ],int n,int e);//构造函数,初始化一个有n个顶点e条边的图

~ALGraph(); //析构函数,释放邻接表中各边表结点的存储空间

T GetVex(int i); //取图中第i个顶点数据信息

void DFSTraverse(int v); //深度优先遍历图

void BFSTraverse(int v); //广度优先遍历图

private:

VertexNode adjlist[MaxSize]; //存放顶点表的数组

int vertexNum, arcNum; //图的顶点数和边数

};

练习题:

一、填空题

1、______是数据的最小单位,_________是讨论数据结构时涉及的最小数据单位。

2、设一棵完全二叉树具有50个结点,则此完全二叉树有个度为2的结点。

3、在用于表示有向图的邻接矩阵中,对第i列的元素进行累加,可得到第i个顶点的______

度。

4、已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该

树中有____________ 个叶子的结点。

5、有一个长度为20的有序表采用二分查找方法进行查找,共有______个元素的查找

长度为3。

6、对于双向链表,在两个结点之间插入一个新结点需要修改的指针共______个。

删除一个结点需要修改的指针共__________个。

7、已知广义表LS=(a,(b,c,d),e),它的深度是__________,长度是__________。

8、循环队列的引入是为了克服__________。

9、表达式a*(b+c)-d/f的后缀表达式是________________。

10、数据结构中评价算法的两个重要指标是。

11、设r指向单链表的最后一个结点,要在最后一个结点之后插入s所指的结点,需执行的

三条语句是___________;r=s; r->next=null;。

12、设有一个空栈,栈顶指针为1000H(十六进制),现有输入序列为a,b,c,d,e,经过

PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH之后,输出序列是_______,而栈顶指针值是_______H。设栈为顺序栈,每个元素占4个字节。

13、模式串P=‘abaabcac’的next函数值序列为________。

14、任意连通图的连通分量只有一个,即是。

15、栈的特性是。

16、串的长度是。

17、如果一个有向图中没有______,则该图的全部顶点可能排成一个拓扑序列。

18、在具有n个叶子结点的哈夫曼树中,分支结点总数为。

相关文档
最新文档