一、填空题:
直接前驱。
直接后继。元素个数。
一个指针域。
前驱。后继。指针域。
next(指针域)
头结点。
相互间存在一种或多种特定关系。
结构。集合线性结构树形结构图形结构。
逻辑结构 -
09数据结构练习一参考。
一、填空题:
二、选择题。
三、判断题。
五、算法设计。
1.设有一个顺序表l,其元素为整形数据,设计一个算法将l中所有小于0的整数放在前半部分,大于等于0的整数放在后半部分。
void tiaozheng(sqlist &l)
i=1; j=
while(i //找到左边第一个大于0的元素。
getelem(l,j,righte);
if(righte>0) 找到右边第一个小于0的元素。
e= 2.设计一个算法从顺序表中删除重复的元素,并使剩余元素间的相对次序保持不变。
/思路:设a[0]..a[j]是没有重复元素的顺序表,检查a[i]是否在这个顺序表中,不在就存入a[j+1]
void shanchu(sqlist &a)
j=0;
for(i=1; i< i++)
//注意j是从0开始的。
3.用顺序表a和b表示的两个线性表,元素的个数分别为m和n,若表中数据都是由小到大顺序排列的,且这(m+n)个数据中没有重复的。
1)设计一个算法将此两个线性表合并成一个,仍是数据由小到大排列的线性表,存储到另一个顺序表c中。
2)如果顺序表b的大小为(m+n)个单元,是否可不利用顺序表c而合并成的线性表存放于顺序表b中?试设计此算法。
3)设顺序表a有m+n个元素,且前m个有序,后n个有序,设计一个算法,使得整个顺序表有序。
void merge1(sqlist a,sqlist b,sqlist &c)
initlist_sq(c);
i=j=1;k=0;
a_len=listlength_sq(a);
b_len=listlength_sq(b);
while((i<=a_len)&&j<=b_lena和a均为非空。else
while(i<=a_len)
while(j<=lb_len)
∥merge1
void merge2(sqlist a,sqlist &b)
for(i=1; i<= i
void merge3(sqlist &a)
j =1;
for(i=m; i< i
4.有一个递增单链表(允许出现值域重复的结点),设计一个算法删除值域重复的结点。并分析算法的时间复杂度。
void dellist(linklist &l)
p=l->next;
while(p->next)
if(p->data==p->next->data)
else p=p->next;
5.设计一个带头结点的单链表l中删除一个最小值结点的算法。
status delmin(linklist &l)
if(l->next) return error;
minpre=ppre=l; minp=p=l->next;
while(p)
if(p->datadata)
ppre=p; p=p->next;
minpre->next=minp->next;
free(minp);
6.已知3个单链表a、b、c中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),设计一个算法使链表a中仅留下3个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为o(m+n+p),其中m、n、和p分别为3个表的长度。
7.两个整数序列a=(a1,a2,…,am)和b=(b1,b2,…,bn)用两个单链表存储,设计一个算法,判断序列b是否是序列a的子序列。
status sublist(linklist a,linklist b)
数据结构练习答案
数据结构测验。一 填空题。1 数据结构一般包括逻辑结构 物理结构和数据操作三个方面的内容。2 无向图的三种常存储表示方法邻接矩阵 邻接表 邻接多重表 3 广义表 a b j,d 的表头是 a 表尾是 b j,d 4 由一棵二叉树的前序序列和中序序列可唯一确定这棵二叉树。5 栈顶的位置是随着入栈和出栈...
数据结构练习3答案
数据结构练习 三 参考。一 选择题。1.顺序查找法适合于存储结构为的线性表。a 哈希存储t span c b r r 8 顺序存储或链式存储。c 压缩存储d 索引存储。2.一个长度为100的已排好序的表,用二分查找法进行查找,若查找不成功,至少比较 次。a 9b 8c 7t span c d r r...
数据结构练习3答案
数据结构练习 三 参考。一 选择题。1.顺序查找法适合于存储结构为的线性表。a 哈希存储t span c b r r 8 顺序存储或链式存储。c 压缩存储d 索引存储。2.一个长度为100的已排好序的表,用二分查找法进行查找,若查找不成功,至少比较 次。a 9b 8c 7t span c d r r...