09级数据结构复习题(终结版)1 - 图文 下载本文

内容发布更新时间 : 2024/12/27 2:37:58星期一 下面是文章的全部内容请认真阅读。

}/*while*/ }/*Delete_Equal */

3、 有一个线性链表,其头指针为head,试编写一个函数计算数据域为X的结点个数。

int count(* head) {

int sum=0;

struct yourds *temp; if(!head)return; *temp=head->next; while(temp) {

if(temp->data==x) sum++;

*temp=temp->next; }

return sum;

4、设有一个由正整数组成的无序单链表,下列算法实现下列功能: (1)、找出最小值结点,且打印该数值 (2)、若该数值是奇数则将其与直接后继结点的数值交换 (3)、若该数值是偶数则将其直接后继结点删除。 5 ListOp_N(LinkList list){//本算法功能是找出正整数单链表list中的最小值结点;

//并在此结点数值是奇数时,把它与其后继结点交换

//在此结点数值是偶数时,把其直接后继结点删除

q=list;

p=q;

while !q { //第一部分:找出最小值结点p,并打印p结点数值

if p->data>q->data p=q;

q=q->next;}//while

printf(\

第 页 21 共 23 页

if odd(p->data){ //第二部分:如果是奇数则交换,odd()是判奇函数

if !(p->next) {q=list; //重新确定p的位置及其前驱q

while ( q->next!=p ) q=q->next;

r=p->next; //引入临时变量r,用于保存p的后继q->next=r; //修改p的前驱p->next=r->next; //修改p的后继r->next=p; //修改r的后继

}//if }

else{ //第三部分:如果是偶函数,则删除后继结点

if !(p->next) { r=p->next;

p->next=r->next; //改变p的后继指针

free(r); //删除p的原后继结点}//if

}//if

}// ListOp_N 5、设从键盘输入一整数的序列:a1, a2, a3,?,an,试编写算法实现:用栈结构存储输入的整数,当

ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。算法应对异常情况(入栈满等)给出相应的信息。 第 页 22 共 23 页

第 页 23 共 23 页