如head是头指针和头结点的区别我理解的是head去指向头结点,如果符合作者的条件就不断申请动态内存,然后head就不停的替换新生成的结点,把head的地址拿给新结点,把新结点的地址拿给head是不
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/18 09:41:24
如head是头指针和头结点的区别我理解的是head去指向头结点,如果符合作者的条件就不断申请动态内存,然后head就不停的替换新生成的结点,把head的地址拿给新结点,把新结点的地址拿给head是不
如head是头指针和头结点的区别
我理解的是head去指向头结点,如果符合作者的条件就不断申请动态内存,然后head就不停的替换新生成的结点,把head的地址拿给新结点,把新结点的地址拿给head是不是这样理解呢?急
#include
using namespace std;
class list
{
public:
\x05list *head;
\x05list *next;
\x05int data;
\x05void creat()
\x05{
\x05\x05int x;
\x05\x05cin>>x;
\x05\x05while(x!='#')
\x05\x05{
\x05\x05\x05list *s=new list;
\x05\x05\x05s->data=x;
\x05\x05\x05s->next=head->next;
\x05\x05\x05head->next=s;
\x05\x05\x05cin>>x;
\x05\x05}
\x05}
\x05
};
void main()
{
\x05list p;
\x05p.creat();
}这个代码哪里错了呢?
如head是头指针和头结点的区别我理解的是head去指向头结点,如果符合作者的条件就不断申请动态内存,然后head就不停的替换新生成的结点,把head的地址拿给新结点,把新结点的地址拿给head是不
// 1. 你的程序在第一次s->next=head->next;会挂,因为head是指针,并非实体节点,且head没 // 有初始化很危险
#include <iostream>
using namespace std;
class list
{
public:
list *head;
list *next;
int data;
list()
{
head = NULL;
next = NULL;
}
void creat()
{
int x;
cin>>x;
while(!cin.fail()) // x!='#' 判断,cin会类型检查,不会赋值给x的,所以将会是死循环
{
list *s=new list;
s->data=x;
s->next = NULL;
s->next = head;
head = s;
cin.clear(); /* 错误位重置 */
cin.sync(); /* 清空缓存区 */
cin>>x;
}
}
// 增加打印显示
void display()
{
list *pl;
pl = head;
while(pl)
{
cout<<pl->data<<" ";
pl = pl->next;
}
cout<<endl;
}
};
void main()
{
list p;
p.creat();
p.display();
}