knrt.net
当前位置:首页 >> jAvA中如何找到单链表中结点p的前驱结点? >>

jAvA中如何找到单链表中结点p的前驱结点?

比较暴力的解法,遍历链表,如果节点q的后继是p,就能得出p的前驱是q

用指向指针的指针**ptr1和**ptr2,分别获取p结点前的两个结点地址,然后 ptr1->next = ptr2->next; free(ptr2);

q->next表示结点中存放的指针,该指针用来指向某个结点。 原来的连接关系是q->next=p,意思是q中存放的指针的值是p,即q指向p。 比如:原来排队p在q的后面,现在要插一个s在他们中间,需要做的事就是把原来p,q二人的联系转化为p,s,q三人的联...

因为p所指结点是q所指结点的前驱结点,也就是p---->next=q;要想删除结点q,则只需将P---->next =q---->next 即可

s->next=p; q->next=s;

要删除p节点的前驱,先定义一个节点q为p的前驱节点。有如下关系: q->pre->next=p; p->pre=q->pre; 然后删除q节点就可以了。 # include # include template struct DbNode { Type data; DbNode *next,*pre; DbNode(DbNode *ptr1 = NULL,DbNode *...

A s->next=p->next; p->next=s; B q->next=s; s->next=p; C p->next=s->next; s->next=p; D p->next=s; s->next=q;

C

DeleteNode( Node* L, int x) { Node* p,q,r; p = q = r = L; while(p->next ! = NULL) { p = p ->next; if(p->data == x) break; r = q; q = p; } delete q; r->next = p; }

int delprior(LinkList p){ LinkList q=p,r; if(q->next==p) return ERROR; else{ while(q->next->next!=p)q=q->next; r=q->next; q->next=r->next; free(r); return TRUE; }}

网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com