当前位置:编程学习 > C/C++ >>

关于链表C++

#include<iostream>
using namespace std;
struct node
{
char data;
node *next;
};
node *create();
void show(node *Head);
int main()
{
node *Head;
cout<<"创建一个链表,请输入数据并以'#'结束:"<<endl;
Head=create();
cout<<"您刚才创建的链表为:"<<endl;
show(Head);
system("pause");
return 0;
}
node *create()
{
node *Head=NULL,*End=Head,*temp;
char tempp;
do
{
cin>>tempp;
if(tempp!='#')
{
temp=new node;
temp->data=tempp;
temp->next=NULL;
if(Head==NULL)Head=temp;
else End->next=temp;
End=temp;
}
}while(tempp!='#');
return Head;
}
void show(node *Head)
{
node *temp;
while(Head!=NULL)
{
cout<<Head->data<<" ";
Head=Head->next;
}
}
为什么在函数*create()中要在前面加上' * '?

在执行create后链表变量Head不是销毁了吗?怎么还可以输出链表?是不是在内存上有这个数据,我们把链表头拿到手就可以了?

追问:node * 类型是什么东西??
答案:问题1:为什么在函数*create()中要在前面加上' * '? 

回答:返回一个指针类型; node *结构体指针类型

问题2:

回答:因为是Head=create(); 在调用该函数时编译器会将当前地址赋给Head之后,create才销毁不然怎么返回直呢

是不是在内存上有这个数据,我们把链表头拿到手就可以了?

回答:因为你建立的new 内存空间的内容己赋值了。经管create销毁并不代表内存中的值也销毁。比如你谁边定义一个变量输出也能输出他的值一样。

node *create();表示返回值是一个node * 类型的
那么也就好理解为什么Head有值了

上一个:Visual C++ 6.0
下一个:C++经典教材

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,