我想实现一个单链表,在create_link函数里,没有使用二级指针,为什么还是可以实现节点指针域指向下一个节点地址的操作?
tail这个指针变量存在于栈区还是堆区?
#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int data;
struct Node* next;
}Node;
void create_link(Node*, Node*);
int main(){
Node* head = (Node*)malloc(sizeof(Node));
head->data=10;
head->next = NULL; //创建首节点
for(int i=0;i<3;i++){
Node* temp = (Node*)malloc(sizeof(Node));//创建后续节点
printf("temp:%p\n", temp); //temp->data = i;
temp->data = i;
create_link(head, temp);
}
Node* mov=head; //遍历所有节点
while(mov!=NULL){
printf("%d\n", mov->data);
mov=mov->next;
}
}
void create_link(Node* Head, Node* temp){
Node* tail = NULL; tail = Head; //tail这个指针变量存在于栈区or堆区?
while((tail->next)!=NULL){
tail = tail->next;
}
tail->next = temp; //tail->next所代表的地址被重新赋值为temp的地址,
temp->next = NULL;
}