在一个单链表中的p所指结点之前插入一个s所指结点时,可执行如下操作:

2024-12-02 14:17:48
推荐回答(4个)
回答1:

q=head;

while(q && q->next!dao=p)

{

q=q->next;

}//循环结束时q后面正好zhi是需要找的dp或者q为空表示链版表中没有权p

if (q)

{

s=new node;

s->data =e;

q->next = s;

s->next = p;

}

q->next表示结点中存放的指针,该指针用来指向某个结点。原来的连接关系是q->next=p,意思是q中存放的指针的值是p,即q指向p。

扩展资料:

链接方式存储的线性表简称为链表(Linked List)。

链表的具体存储表示为:

① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)

② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link))

参考资料来源:百度百科-单链表

回答2:

简单来说,p前插,p和s都是指针,可以利用这一点。现将s放到p后边的位置,然后利用临时元素t,将p和s的data对调,这样就将s插到p前边了。这种方式的时间复杂度是O(1)。比单链表头开始遍历,找到p前驱,然后插s的时间复杂度低,遍历式算法的复杂度是O(n)

回答3:

例如:
t=a
a=b
b=t 那么按照这个例子扩展命题;
t=p->data
p->data=s->data
s->data=t
中间p->data=s->data 是链表的死规定,背会更好,上面
s—>next=__p->next__
p—>next=s
也是链表的规定要切记阿。
老师讲链表时会证明的。

回答4:

答案应该说不完整,这样操作之后P指针所指结点还在S之前只是P原来指向的结点内容变了,题目要求P在S之后吧,后面应该加上P和S指针改变