这个链表我学了好几天了结果还是没学会,搜了好多方法我也还是不知道哪有问题,帮忙挑下错误,谢谢!
代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct linkedlist
{
int num;
struct linkedlist* next;
}node;
node* NODE()
{
int Num;
node* head = NULL;
head = (node*)malloc(sizeof(node*));
node* new;
while (1) {
int a;
scanf_s("%d", &Num);
if (Num != 0) {
new = (node*)malloc(sizeof(node*));
new->num = Num;
head->next = new->next;
head->next = new;
}
else goto a;
}
a:
return head;
}
void output(node*head) {
node *put=head->next;
while (put!=NULL)
{
printf("%d\n", put->num);
put = put->next;
}
}
int main()
{
node* head=NULL;
head = NODE();
output(head);
}
错误如下:
你题目的解答代码如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct linkedlist
{
int num;
struct linkedlist *next;
} node;
node *NODE()
{
int Num;
node *head = NULL;
head = (node *)malloc(sizeof(node *));
head->next = NULL; //加上
node *new;
while (1)
{
int a;
scanf_s("%d", &Num);
if (Num != 0)
{
new = (node *)malloc(sizeof(node *));
new->num = Num;
new->next = head->next; //你new 和 head 写反了;
head->next = new;
}
else
goto a;
}
a:
return head;
}
void output(node *head)
{
node *put = head->next;
while (put != NULL)
{
printf("%d\n", put->num);
put = put->next;
}
}
int main()
{
node *head = NULL;
head = NODE();
output(head);
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
#include<stdio.h>
#include<stdlib.h>
typedef struct linkedlist
{
int num;
struct linkedlist* next;
}node;
node* NODE()
{
int Num;
node* head = NULL;
//head = (node*)malloc(sizeof(node*));
// 分配的应该是node 的空间,而不是 node*的空间
head = (node*)malloc(sizeof(node));
//node* new;
// 不要使用new作为标识符
node * newNode;
node* now = head;
while (1) {
int a;
scanf_s("%d", &Num);
if (Num != 0) {
//new = (node*)malloc(sizeof(node*));
newNode = (node*)malloc(sizeof(node));
newNode->num = Num;
newNode ->next = NULL;
now->next = newNode;
now = now -> next;
}
else goto a;
}
a:
return head;
}
void output(node*head) {
node *put=head->next;
while (put!=NULL)
{
printf("%d\n", put->num);
put = put->next;
}
}
int main()
{
node* head=NULL;
head = NODE();
output(head);
}