数据结构考试题参考答案
1、设顺序表 L 中的数据元素递增有序。试写一算法,将数据元素 x 插入到顺序表 L 的适当
位置,以保持该表的有序性。
解:存储结构为:
typedef struct SeqList
{ DataType *data;
int MaxLen;
int len;
}SeqList;
算法如下:
void insertLx(SeqList &L, DataType x)
{ if(L.len==L.maxlen) return;
int i=L.len-1;
while(i>=0 && x<L.data[i])
{ L.data[i+1]=L.data[i]; i=i-1;}
L.data[i+1]=x; L.len++;
}
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