c语言的数据结构中,next是如何指向下一个元素的?

2024-12-17 06:32:31
推荐回答(5个)
回答1:

在函数中不是有q->next=p;这时q是插入前的尾节点。那样q的的下一个(新插入的节点)就由q指向节点里的字段next指向了。

单链表的插入只需让s->next 和p->next的指针做一点改变即可。

s->next = p->next;

p->next = s; 

单链表第i个数据插入结点的算法思路是:

1、声明一个指针p指向链表的第一个结点,初始化j从1开始;

2、当j< i 时,遍历链表,让p的指针向后移动,不断指向下一结点,j累加1;

3、若到链表末尾p为空,说明第i个元素不存在;

4、否则查找成功,在系统中生成一个空结点s;

5、将数据元素e赋值给s->data;

6、单链表的插入标准语句 s->next = p->next; p->next = s;

7、返回成功。

扩展资料

单链表的建立有头插法、尾插法两种方法。

1、头插法

单链表是用户不断申请存储单元和改变链接关系而得到的一种特殊数据结构,将链表的左边称为链头,右边称为链尾。头插法建单链表是将链表右端看成固定的,链表不断向左延伸而得到的。头插法最先得到的是尾结点。

链表建立的过程是申请空间、得到数据、建立链接的循环处理过程。

2、尾插法

若将链表的左端固定,链表不断向右延伸,这种建立链表的方法称为尾插法。尾插法建立链表时,头指针固定不动,故必须设立一个搜索指针,向链表右边延伸,则整个算法中应设立三个链表指针,即头指针head、搜索指针p2、申请单元指针pl。尾插法最先得到的是头结点。

回答2:

楼上的哥们好像回答的方向偏了

指针的声明
指向类型 *p;

这个*就标志这这是一个指针,声明之后,变量p在调用的时候就不是调的指针本体了,而是指针所指的目标!

例如:p->next
这不是指针p的next,而是指针p所指向的目标中的next

结构体作为自定义的数据结构,创建后系统只能返回整个结构体的首地址,所以只能用一个指针来接,结构体中指针变量命名为next只是国际惯例,你就算改成*n也一样,只是以后用的时候:
p->next 改成 p->n 就可以了

指针赋值常用的有两种:
1、把目标的地址取来赋给指针
p = & target //&就是取地址符

2、把另一个指针所指向的目标的地址赋给指针
p = q;

回答3:

在函数中不是有q->next=p;这时q是插入前的尾节点。那样q的的下一个(新插入的节点)就由q指向节点里的字段next指向了。这与指针名无关。关键是要看链表相关的操作函数怎么使用链表节点里的字段。

回答4:

栈是自定义的,看你的栈是怎样定义的,如果你的栈顶指针指向的是下一个可用的栈空间,那你取栈顶元素的时候就要*(s.top-1);而如果你的栈顶指针指向的是当前可能的空间,取顶就要*(s.top)--

回答5:

是一样的和命名没关系,和q->next =p;赋值有关,指针的指向,只是为了更好的理解