数 据 结 构 试 题 大 题 编 程 及 参 考 答案 ( 总6 页 ) --本 页 仅 作 为 文 档 封 面 , 使 用 时 请 直 接 删 除 即 可 -- --内 页 可 以 根 据 需 求 调 整 合 适 字 体 及 大 小 -- 数 据 结 构 试 题 大 题 编 程 及 参 考 答 案 --第 1页数 据 结 构 试 题 大 题 编 程 及 参 考 答 案 --第 1页2 数据结构考试题参考答案 1、设顺序表L中的数据元素递增有序。试写一算法,将数据元素x 插入到顺序表L的适当位置,以保持该表的有序性。 解:存储结构为: typedef struct SeqList { DataType *data; int MaxLen; int len; }SeqList; 算法如下: void insertLx(SeqList &L, DataType x) { if== return; int i=; while(i>=0 && x<[i]) { [i+1]=[i]; i=i-1;} [i+1]=x; ++; } 2、试写一个算法,在带头结点的单链表L的元素x 前插入一个结点 y。 解:存储结构如下: typedef struct Lnode {ElemType data; struct Lnode *next; }Lnode, *LinkList; 算法如下: void insert_y_before_x(LinkList L, ElemType x, ElemType y) { Lnode *q, *p=L; while(p->next && p->next->data!=x) p=p->next; //找 x 的前驱结点 p; if(!p->next) return; // 若不存在结点 x,则返回; q=new Lnode; q->data=y; q->next=p->next; p->next=q; } 3、试写一个算法,统计带头指针的单链表L的元素个数。 解:存储结构如下: typedef struct Lnode {ElemType data; struct Lnode *next; }Lnode, *LinkList; 算法如下: int length(LinkList L) { int len=0; Lnode *p=L; while(p) { len++; p=p->next; } 数 据 结 构 试 题 大 题 编 程 及 参 考 答 案 --第 2页数 据 结 构 试 题 大 题 编 程 及 参 考 答 案 --第 2页3 return len; } 注:如果单链表是带头结点的,则算法如下: int length(LinkList L) { int len=0; Lnode *p=L->next;; while(p) { len++; p=p->next; } return len; } 4、试写一个算法,在带头结点的单链表L的第k 个结点后插入一个结点x。 解: 存储结构如下: typedef struct Lnode {ElemType data; struct Lnode *next; }Lnode, *LinkList; 算法如下: void insert_aft...