#新手求助#关于使用new的问题
node* createFromLast(){
node *p_old = NULL;
node *p_new = NULL;
int n;
cin >> n;
node *last = new node;
last->value = n;
last->next = NULL;
p_old = last;
while (cin >> n)
{
p_new = new node;
p_new->value = n;
p_new->next = p_old;
p_old = p_new;
}
return p_new;
}
这是一个用尾插法创建列表的一个方法,关于p_new有点问题;
p_new是一个指向结构体的指针,声明并初始化为NULL, 如果在while循环里不用new会出现什么问题,为什么{:10_284:} p_new 是新的节点。透过 new 申请新的空间来放新的资料。
没有就没有空间存储新的数据……
你的 while 是死循环吧? claws0n 发表于 2018-9-7 18:39
p_new 是新的节点。透过 new 申请新的空间来放新的资料。
没有就没有空间存储新的数据……
你的 while 是 ...
while循环输入0就可以跳出了,或者ctrl+z然后回车 claws0n 发表于 2018-9-7 18:39
p_new 是新的节点。透过 new 申请新的空间来放新的资料。
没有就没有空间存储新的数据……
你的 while 是 ...
// 尾插法
node* createFromLast()
{
node *p_old = NULL;
node *p_new = NULL;
int n;
cin >> n;
node *last = new node;
last->value = n;
last->next = NULL;
p_old = last;
while (cin >> n)
{
p_new = new node;
p_new->value = n;
p_new->next = p_old;
p_old = p_new;
}
return p_new;
}
// 头插法
node *createFromHead()
{
node *p_old = NULL;
node *p_new = NULL;
node *head = new node;
int n;
cin >> n;
head->value = n;
p_old = head;
while (cin >> n)
{
p_new = new node;
p_new->value = n;
p_old->next = p_new;
p_old = p_new;
}
return head;
}
// 打印链表
void printList(node *head)
{
if (head == NULL)
{
cout << "链表为空!" << endl;
}
else
{
while (head)
{
cout << setw(4) << head->value; // 引发了异常: 读取访问权限冲突。
**head** 是 0xCDCDCDCD。
head = head->next;
}
cout << endl;
}
}
int main()
{
cout << "请输入链表数据:" << endl;
//node *test = createFromLast();
node *test = createFromHead();
cout << "创建链表完毕:" << endl;
printList(test);
system("pause");
return 0;
}
你好,不好意思,又有问题要麻烦你了,
关于打印链表的:
1. 尾插法打印一切正常;
2.头插法打印可以打印完整,但程序会出错,错误如注释所示;
em......求解 Eakim 发表于 2018-9-7 22:24
你好,不好意思,又有问题要麻烦你了,
关于打印链表的:
1. 尾插法打印一切正常;
还没上机,应该只有输出一个,然后报错吧?
你的链表不是链表,断开了。
尾插法没有维护尾指针;头插法的尾巴不见了,没有维护头指针
页:
[1]