已知head是指向一个带头结点的单链表的头指针,p指向该链表的任一结点,试写一算法,将p所指向的结点与其后续结点位置交换.这是课本给出的答案void ExchangeNode(LinkList head,ListNode *p){ ListMode *q,*r,*s q=p->next if(p==head) head=head-next s=head-next head->next=p p->next=selse r=hea...
已知head为指向带头结点的单链表的头指针,指针变量p指向一个新结点,next是结点的指针域,若要将p所指结点插入到单链表的表头,则正确的语句序列是A.head->nex
编写一个算法来交换单链表中指针P所指结点与其后继结点,HEAD是该链表的头指针,P指向该链表中某一结点。___(1)已知非空线性链表第一个结点由List指出,请
问答题已知head为带头结点的单循环链表的头指针,链表中的数据元素依次为(a1,a2,a3,a4,…,an),A为指向空的顺序表的指针。阅读以下程序段,并回答问题:(1)写出执行下列程序段后的顺序表A中的数据元素;(2)简要叙述该程序段的功能。if(head->next!=head){p=head->next;A->length=0;while(p->next!=head)...
Q->next = PR->next = P free(Q)3 L *Q Q->next = P Q->next = P->next free(P)4 L * p,q p = head q = p->next head = q free(p) return head5. L *p,s p = head s = p->next while(s->next) p = s s = s->next ...
已知一带头结点的单链表,由头指针H指向,其结点的类型如下: typedef struct node { elemtype data; struct node *next; }NODE,*NODEPTR; 现要在链表中删除其关键字为aidkey的结点,其程序如下: int deletelm(NODEPTR H,keytype aidkey) /*若删除成功,则返回1,否则返回0*/ { NODEPTR pre,p;...
①count=0,p和 q 指向链表表头结点的下一个结点; ②若p为空,转⑤; ③若count 等于k,则 q指向下一个结点;否则,count=count+1; ④ p指向下一个结点,转②; ⑤若 count 等于k,则查找成功,输出该结点的 data 域的值,返回 1;否则,说明 k 值超过了线性表的长度,查找失败,返回 0; ...
node *q = p->nextp->data = q->datap->next = q->nextfree(q)搞定!思路是这样的我们删除p的下一个节点很容易,删除p所指向的节点很难,我们可以用一个巧妙的方法,把p的下一个节点的内容赋值给p(相当于把p删除了,只是下一个节点是一个多余的节点了),那么我们只要删除下一个节点就可以了,这样就转化...
(1)算法基本思想如下:从头至尾遍历单链表,并用指针P指向当前节点的前K个节点。当遍历到链表的最后一个节点时,指针P所指向的节点即为所查找的节点。 (2)算法描述: Int LocateElement(linklist list,int k) { P1=list->link; P=list; i=1; while(P1) { P1=P1->link; i++; if(i>k) p=p->next...