q->data[q->rear++]=s[--top];
}
4.利用栈实现将十进制数 x 转换成二进制数并输出结果。
Void BNumber(int x)
算法设计题:
1. 设计算法将一个带头结点的单循环链表 A 分解为两个具有相同结构的链表 B、C,其中:B 表中的结点为 A
表中元素的顺序号为奇数的结点,而 C 表中的结点为 A 表中元素的顺序号为偶数的结点。(要求利用原表结
点。)
2. 已知 S 为顺序栈。写出 S 的存储结构类型描述。试编写算法实现将元素 x 插入栈 S 的入栈操作 Push(S,x)
和删除栈顶元素的出栈操作 Pop(S)。
3. 已知队列 Q 以循环队列存储。写出 Q 的存储结构类型描述,并试编写算法实现将元素 x 插入队列 Q 的入
队操作 EnQueue(Q,x)和从队列 Q 中获取队首元素的函数 GetTop(Q)。
4. 假设线性表 L=(a1,a2,……,an) 用带头结点的单链表存储表示,试编写算法对其实现就地逆置,即利用原链表
中每一个结点存储空间,使得元素的逻辑次序改变为(an,……, a2,a1)。
5.设有两个按升序排列的单链表 X 和 Y,其头指针分别为 p,q 结点结构说明如下:
typedef struct nodel
{ int data; struct nodel *next }node;
试设计一个算法 void concat(node *p,*q)将它们合并成一个以 p 为头指针的单链表 Z,使其仍然有序。
6.设有序表 r 长度为 n,欲在表中查找键值为 Kn 的某元素。若查找成功,则返回该元素在有序表 r 中的位置,若
不成功,则返回 0 值。用二分查找法,编写一算法完成上述操作,并给出该算法的平均查找长度。该有序表存储
结构定义如下
Typedef struct
{ keytype key; Elemtype data; }rec;
评论0
最新资源