《数据结构》实验题目
实验0 预备实验
C语言的结构类型定义表示复数Complex的抽象数据类型。
1)在复数内部用浮点数定义其实部与虚部;
2)设计实现复数的+、-、×÷等运算的函数。
    基本操作函数接口:
    InitComplex( &Z, v1, v2 ):操作结果:构造复数Z,其实部和虚部分别被赋以参数v1v2的值。
    Add( z1,z2, &sum ):初始条件:z1,z2是复数。
操作结果:用sum返回两个复数z1,z2的和值。
    Sub( z1,z2, &residue):初始条件:z1,z2是复数。
操作结果:用res返回两个复数z1,z2的差值。
    mul( z1,z2, &product ):初始条件:z1,z2是复数。
操作结果:用product返回两个复数z1,z2的积。
    div( z1,z2, "ient,&residue):初始条件:z1,z2是复数。
操作结果:用quotient 返回两个复数z1z2的商, residue返回它们的余数。
要求main函数中只能是基本的输入输出语句和函数调用语句,其运行界面如下:
please input first complex number :  a +  bi
the other one : c+  di
please choice operation: +, -, * or /:+
(a +  bi)+ (c+  di)=……
其中a,b,c,d是用户从键盘上输入的实型值,分别代表两个复数的实部和虚部。
实验1、线性表的基本操作
1、实验目的
1)掌握线性表的基本运算。
2)掌握顺序存储的概念,学会对顺序存储数据结构进行操作。
3)加深对顺序存储数据结构的理解,逐步培养解决实际问题的编程能力。
2、实验内容
1)基础题
(1)编写顺序表基本操作函数。
typedef struct {
  ElemType *elem; // 存储空间基址(表空间数组)
      int length; // 当前长度
int listsize; // 当前分配的存储容量(sizeof(ElemType)为单位)
} SqList; // 俗称 顺序表
初始化线性表    void  InitList_Sq(SqList &L)
向线性表指定位置插入元素  void ListInsert_Sq(SqList &L, int pos, ElemType e)
删除指定元素值的线性表记录  void ListDelete1_Sq(SqList &L, ElemType e, int &pos)
删除指定位置的线性表记录void ListDelete2_Sq(SqList &L, int pos, ElemType &e)
查线性表中的元素  int LocateElem_Sq(SqList L, ElemType e)
输出线性表元素 void OutputList(SqList L)
(2)调用上述函数实现下列操作,操作步骤如下。
初始化顺序表。
调用插入函数建立一个顺序表。
在顺序表中查指定的元素。
在顺序表中删除指定值的元素。
在顺序表中删除指定位置的元素
遍历并输出顺序表。
注意 每完成一个步骤,必须及时输出顺序表元素,便于观察操作结果。
实验2、链表的基本操作
1、实验目的
1)掌握链表的概念,学会对链轰进行操作。
2)加深对链式存储数据结构的理解,逐步培养解决实际问题的编程能力。
2、实验内容
(1)编写链表基本操作函数。
typedef struct Lnode {
    ElemType data; // 数据域
    struct Lnode *next; // 指针域
} LNode, *LinkList;
初始化链表    CreateList_L(LinkList &L, int n) /*输入n个元素的值,建立带表头结点的单链线性表L*/
向链表指定位置插人元素    InsertList(LinkList &L, ElemType item, int re ) /*在表L的第rc位置上插入item元素*/
③向有序链表指定位置插人元素InsertList(LinkList &L, ElemType item) /*向有序链表L插入键值为item的结点*/
删除指定元素值的链表记录    DeleteList(LinkList &L, ElemType item )
查链表中的元素    int FindList(LinkList  L, ElemType item )
输出链表元素    OutputLis( LIST  L )
(2)调用上述函数实现下列操作,操作步骤如下。
初始化链表。
调用插人函数建立一个链表。
在链表中寻指定的元素。
在链表中删除指定值的元素。
遍历并输出链表。
注意  每完成一个步骤、必须及时输出链表元素,便于观察操作结果。
实验3:栈的基本操作
1、实验目的
1)熟悉栈的定义和栈的基本操作。
2)掌握顺序存储栈和链接存储栈的基本运算。
3)加深对栈结构的理解.逐步培养解决实际问题的能力。
2、实验内容
(1)编写栈的基本操作函数(分别用顺序和链接两种方式实现)。
#define STACK_INIT_SIZE 100 //栈内存的初始分配量,以sizeof(ElemType)为单位
#define STACKINCREMENT 10 //栈内存的分配增量,以sizeof(ElemType)为单位
typedef struct {
SElemType *base;    //存储空间的基址,数据元素的数据类型约定为SElemType   
 SElemType * top;    //表示栈顶,如果top==base,表示空栈     
int stacksize;    //当前分配的存储容量,以sizeof(ElemType) 为单位
} SqStack
进栈函数  Status Push(SqStack *S,  SElemType e)
出栈函数    Status Pop(SqStack *S,SElemType *e)
输出栈元素  OutputStack(SqStack *S)
(2)调用上述函数实现下列操作,操作步骤如下。
调用进栈函数建立一个栈。
读取栈顶元素。
从栈中删除元素。
输出栈中的所有元素。
注意  每完成一个步骤就必须及时输出栈中元素,以便观察操作结果
实验队列的基本操作
1、实验目的
1)掌握链接存储队列的进队和出队等基本操作。
2)掌握环行队列的进队和出队等基本操作。
3)加深对队列结构的理解,逐步培养解决实际问题的编程能力。
2、实验内容
(1)编写链接队列的基本操作函数。
typedef struct QNode {
        QElemType data;
        struct QNode *next;
        } QNode, *QueuePtr;
typedef struct {
    QueuePtr front; // 队头指针
    QueuePtr rear; // 队尾指针
    } LinkQueue;
进队操作    EnQueue(LinkQueue *Q, QElemType e)
出队操作,队空DeQueue(LinkQueue *Q, QElemType *e)
输出队列中元素    0utputQueue(LinkQueue Q)
(2)c语言listinsert函数调用上述函数实现下列操作,操作步骤如下。
调用进队函数建立一个队列。
读取队列中的第一个元素。
从队列中删除元素。
输出队列中的所有元素。
注意  每完成一个步骤就必须及时输出队列中元素,以便观察操作结果。
(3)编写环型队列的基本操作函数。
#define QueueSize 100
    typedef Struct{
        int    front;
        int    rear;
        QElemType      *base
    }sqQueue;
进队操作,返回1为队满 EnQueue(SqQueue *Q, QElemType e)
出队操作,返回1为队空 DeQueue(SqQueue *Q, QElemType *e)
输出队列中元素    outPutQMeue(SqQueue  Q)
(4)调用上述函数实现下列操作,操作步骤如下:
调用进队函数建立一个队列。
读取队列中的第一个元素。
从队列中删除元素。
输出队列中的所有元素。
注意  每完成一个步骤就必须及时输出队列中元素,以便观察操作结果。
实验二叉树
1、实验目的
1) 掌握二叉树链表的结构的建立过程。
2)掌握用递归方法实现二叉树的遍历。
3)加深对二叉树的理解,逐步培养解决实际问题的编程能力。
  2、实验内容
(1)编写二叉树的基本操作函数。
Typedef struct BiTNode 
{    TelemType data;
        struct BiTNode *lchild,*rchild;
  } BiTNode,*BiTree;
创建一棵二叉树CreateBiTree(BiTree *T);
先序遍历,递归方法    re_PreOrder(BiTree * tree )
中序遍历,递归方法    re_MidOrder(BiTree * tree )
④后序遍历,递归方法    re_PostOrder(BiTree * tree )
(2)调用上述函数实现下列操作。
用递归方法分别先序、中序和后序遍历二叉树;
  注意  要求动态显示二叉树的建立过程。
实验6    图的基本操作
1. 实验目的
1)掌握图的邻接矩阵、邻接表的表示方法。
2)掌握建立图的邻接矩阵的算法。
3)掌握建立图的邻接表的算法。
4)加深对图的理解,逐步培养解决实际问题的编程能力。
2. 实验内容
(1)编写图基本操作函数。
建立图的邻接表,邻接矩阵Create_Graph(LGraph lg. MGraph mg )
邻接表表示的图的递归深度优先遍历    LDFS( LGraph g, int i )
邻接矩阵表示的图的递归深度优先遍历MDFS( MGraph g,int i, int vn )

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。