一个单向链表,head指向头结点,每个结点包含数据域data和指针域next。链表按数据域递增有序排列,完成以下函数,使删除链表中数据域值相同的结点。typedefintdatatype;typedefstructnode{datatypedata;structnode*next;}linklist;delete(linklist*head){linklist*p,*q;p=head->next;if(q==NULL)return;p=q->next;while(p!=NULL)if(p->data==q->data){________;free(p);P=q->next;}else{q=q;________}return(s);}
举一反三
- (2)intBB(LinkList*L){LinkList*p,*q,*r;p=L->next;if(!p)return0;while(p->next){q=p;while(q->next){if(q->next->data!=p->data)q=q->next;else{r=q->next;q->next=r->next;free(r);}}p=p->next;}}Writethefunctionofthealgorithmabove.(5.0分)
- 设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为()。 A: q=p->next;p->data=q->data;p->next=q->next;free(q); B: q=p->next;q->data=p->data;p->next=q->next;free(q); C: q=p->next;p->next=q->next;free(q); D: q=p->next;p->data=q->data;free(q);
- 删除单链表中指针p所指结点的语句序列为( )。 A: q=p->;next; p->;data=q->;data; p->;next=q->;next; free(q); B: q=p->;next; q->;data=p->;data; p->;next=q->;next; free(q); C: q=p->;next; p->;next=q->;next; free(q); D: q=p->;next; p->;data=q->;data; free(q);
- 设指针变量p指向单链表中结点A,若删除单链表中结点A,则操作序列为 A: q=p->next;p->data=q->data;p->next=q->next;deleteq; B: q=p->next;q->data=p->data;p->next=q->next;deleteq; C: q=p->next;p->next=q->next;deleteq; D: q=p->next;p->data=q->data;deleteq;
- 假设某个单向循环链表的长度大于1,且表中既无头结点也无头指针。已知s为指向链表中某个结点的指针,试编写算法在链表中删除指针s所指结点的前驱结点。 StatusListDelete_CL(LinkList &S) { LinkList p,q; if(S==S->next)return ERROR; q=S; p=S->next; while( ){ q=p; p=p->next; } q->next=p->next;