假设以带头结点的单链表表示有序表,单链表的类型定义如下: typedef struct node{ DataType data; struct node*next }LinkNode,*LinkList; 编写算法,从有序表A中删除所有和有序表B中元素相同的结点。
参考答案:
解析:参考答案:一: void f34(LinkList ha,LinkList hb) { //hb和hb分剐为存放A和B有序链表的头指针 LinkList p,q,r; p=ha; q=hb—>next; while(p—>next&&q){ if(p—>next—>data<q->data) p=p—>next; else{ if(p—>next—>data==q—>data){ r=p—>next; p—>next=r—>next; free(r); } //从A表删除相同的元素结点 q=q—>next; } } } 参考答案:二: void f34(LinkList ha,LinkList hb) { //hb和hb分别为存放A和B有序链表的头指针 LinkList p,q,r; r=ha;p=ha—>next; q=hb—>next; while(p&&q){ if(p—>data<q—>data){ r=p;p=p->next; }else{ if(p—>data==q—>data){ r—>next=p—>next; free(p); p=r—>next; } //从A表删除相同的元素结点 q=q—>next } } }