请帮小弟我看看为什么这个链表创建不起来
请帮我看看为什么这个链表创建不起来?
下面是一个程序,没有要求显示输出,只是在创建过程中,在黑窗口输入一个数字后就终止了,不知什么原因,我以为至少可以一直输入只要不输入字符。
------解决方案--------------------

撸主这样是不对的:
InitializeTree函数的实现里面把person搞成了null,所以createTree()里面再访问person就挂了。
Get it?
------解决方案--------------------
------解决方案--------------------
下面是一个程序,没有要求显示输出,只是在创建过程中,在黑窗口输入一个数字后就终止了,不知什么原因,我以为至少可以一直输入只要不输入字符。
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
struct student
{
int age;
};
typedef struct student Student;
typedef struct tree
{
Student item;
struct tree *next;
}Tree;
void InitializeTree(Tree *head);
void CreateTree(Student item, Tree *head);
int main(void)
{
Student item;
Tree person;
InitializeTree(&person);
while(scanf("%d", &item.age) == 1)
{
rewind(stdin);
CreateTree(item, &person);
}
return 0;
}
void InitializeTree(Tree *head)
{
head = NULL;
}
void CreateTree(Student item , Tree *head)
{
static Tree *current, *prev;
current = (Tree *)malloc(sizeof(Tree));
current->item = item;
current->next = NULL;
if(head == NULL)
{
head = current;
prev = current;
}
else
{
prev->next = current;
prev = current;
}
}
------解决方案--------------------
撸主这样是不对的:
Tree person;
InitializeTree(&person);
InitializeTree函数的实现里面把person搞成了null,所以createTree()里面再访问person就挂了。
Get it?
------解决方案--------------------
while(scanf(" %d", &item.age) == 1)
//这样试试,
//之前是因为第二次会把第一次输入时的换行符给到age,导致你匹配不正确,退出了while循环!
------解决方案--------------------