返回链表的头指针
Returning the head pointer of a linked list
为什么这段代码给出正确答案?
我正在返回 pointer.But 返回时没有分段错误 this.What 是这段代码的完整机制吗?
谁能告诉我 input()
函数是如何工作的以及它是如何返回链表头的?
#include<bits/stdc++.h>
using namespace std;
typedef struct a{
int data;
struct a* next;
}link;
typedef link *node;
//Function to take input of linked list//
node input()
{
int n,i;
cout<<"Enter the size of the linked list\t";
cin>>n;
node g,header,rear;
cout<<"Enter the elements\n";
g=new link;
g->next=NULL;
cin>>g->data;
header=g;
rear=g;
for(i=1;i<n;i++)
{
g=new link;
cin>>g->data;
g->next=NULL;
rear->next=g;
rear=g;
}
return header;
}
void output(node f)
{
cout<<"Linked List ELEMENTS\n";
//cout<<"\nThe content of linked list is\n";
while(f!=NULL)
{
cout<<f->data<<"\t";
f=f->next;
}
}
int main()
{
node head,f;
head=input();
output(head);
return 0;
}
并非每次返回指针时都必须出现段错误。访问未分配的指针时会发生段错误。但是该函数首先使用 new
动态分配指针,然后访问并 returns 它。所以它可以正常工作。
input()
函数
链表大小(用户输入)
int n,i;
cout<<"Enter the size of the linked list\t";
cin>>n;
头节点中列表的第一个元素(用户输入)
node g,header,rear;
cout<<"Enter the elements\n";
g=new link;
g->next=NULL;
cin>>g->data;
header=g;
rear=g;
链表的后续元素连接到头节点
for(i=1;i<n;i++)
{
g=new link;
cin>>g->data;
g->next=NULL;
rear->next=g;
rear=g;
}
头节点返回
return header;
为什么这段代码给出正确答案?
我正在返回 pointer.But 返回时没有分段错误 this.What 是这段代码的完整机制吗?
谁能告诉我 input()
函数是如何工作的以及它是如何返回链表头的?
#include<bits/stdc++.h>
using namespace std;
typedef struct a{
int data;
struct a* next;
}link;
typedef link *node;
//Function to take input of linked list//
node input()
{
int n,i;
cout<<"Enter the size of the linked list\t";
cin>>n;
node g,header,rear;
cout<<"Enter the elements\n";
g=new link;
g->next=NULL;
cin>>g->data;
header=g;
rear=g;
for(i=1;i<n;i++)
{
g=new link;
cin>>g->data;
g->next=NULL;
rear->next=g;
rear=g;
}
return header;
}
void output(node f)
{
cout<<"Linked List ELEMENTS\n";
//cout<<"\nThe content of linked list is\n";
while(f!=NULL)
{
cout<<f->data<<"\t";
f=f->next;
}
}
int main()
{
node head,f;
head=input();
output(head);
return 0;
}
并非每次返回指针时都必须出现段错误。访问未分配的指针时会发生段错误。但是该函数首先使用 new
动态分配指针,然后访问并 returns 它。所以它可以正常工作。
input()
函数
链表大小(用户输入)
int n,i; cout<<"Enter the size of the linked list\t"; cin>>n;
头节点中列表的第一个元素(用户输入)
node g,header,rear; cout<<"Enter the elements\n"; g=new link; g->next=NULL; cin>>g->data; header=g; rear=g;
链表的后续元素连接到头节点
for(i=1;i<n;i++) { g=new link; cin>>g->data; g->next=NULL; rear->next=g; rear=g; }
头节点返回
return header;