C++链表表示法,有什么区别?
C++ linked list notation, what is the difference?
我只想知道这两种写法有没有区别:
第一个例子:
struct node{
int data;
node* next;
};
void insert(node* list){
node* n,* last;
last = list;
while(last)
last = last -> next;
n = new node;
last = n;
n -> next = NULL;
cin >> n -> data;
}
int main(){
node* list = new node;
list -> next = NULL;
insert(list);
return 0;
}
第二个例子:
struct node{
int data;
node* next;
};
void insert(node* list){
node* n,* last;
last = list -> next;
while(last)
last = last -> next;
n = new node;
last = n;
n -> next = NULL;
cin >> n -> data;
}
int main(){
node* list = new node;
list -> next = NULL;
insert(list);
return 0;
}
所以我想知道符号谎言之间是否有区别:
在第一个例子中:
last = list;
在第二个例子中
last = lista -> next;
什么是 node* list do/represent in void insert(node* list){}
那只是一个指向任何列表的指针,一个指向主列表的指针,还是什么?
struct node{
int data;
node* next;
};
void insert(node* list){
node* n,* last;
last = list;
while(last -> next)
last = last -> next;
n = new node;
last = n;
n -> next = NULL;
cin >> n -> data;
}
int main(){
node* list = new node;
list -> next = NULL;
insert(list);
return 0;
}
嗯,显然没有人愿意给我答案,所以我自己找到了。这就是编码的样子。
原因:
last = list -> next;
以下是行不通的:list -> next 被声明为 NULL 因为在开始时它没有指向任何元素所以显而易见的答案是:
last = list;
因为列表包含指向下一个元素的头部地址
你上面的解释是正确的,但我还要补充一点,假设你的
list = NULL;
void insert(node* list){
node* n,* last;
last = list -> next;
while(last)
last = last -> next;
n = new node;
last = n;
n -> next = NULL;
cin >> n -> data;
}
然后在上述情况下,您试图访问 'NULL' 的下一个 list->next
,因此它会给您运行时错误,因为您无法访问 nullptr 的下一个,因为它未定义。
我只想知道这两种写法有没有区别:
第一个例子:
struct node{
int data;
node* next;
};
void insert(node* list){
node* n,* last;
last = list;
while(last)
last = last -> next;
n = new node;
last = n;
n -> next = NULL;
cin >> n -> data;
}
int main(){
node* list = new node;
list -> next = NULL;
insert(list);
return 0;
}
第二个例子:
struct node{
int data;
node* next;
};
void insert(node* list){
node* n,* last;
last = list -> next;
while(last)
last = last -> next;
n = new node;
last = n;
n -> next = NULL;
cin >> n -> data;
}
int main(){
node* list = new node;
list -> next = NULL;
insert(list);
return 0;
}
所以我想知道符号谎言之间是否有区别: 在第一个例子中:
last = list;
在第二个例子中
last = lista -> next;
什么是 node* list do/represent in void insert(node* list){} 那只是一个指向任何列表的指针,一个指向主列表的指针,还是什么?
struct node{
int data;
node* next;
};
void insert(node* list){
node* n,* last;
last = list;
while(last -> next)
last = last -> next;
n = new node;
last = n;
n -> next = NULL;
cin >> n -> data;
}
int main(){
node* list = new node;
list -> next = NULL;
insert(list);
return 0;
}
嗯,显然没有人愿意给我答案,所以我自己找到了。这就是编码的样子。 原因:
last = list -> next;
以下是行不通的:list -> next 被声明为 NULL 因为在开始时它没有指向任何元素所以显而易见的答案是:
last = list;
因为列表包含指向下一个元素的头部地址
你上面的解释是正确的,但我还要补充一点,假设你的
list = NULL;
void insert(node* list){
node* n,* last;
last = list -> next;
while(last)
last = last -> next;
n = new node;
last = n;
n -> next = NULL;
cin >> n -> data;
}
然后在上述情况下,您试图访问 'NULL' 的下一个 list->next
,因此它会给您运行时错误,因为您无法访问 nullptr 的下一个,因为它未定义。