}/*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 页