#include"stdafx.h"
#include"malloc.h"
struct student//声明一个结构体
{
int num;
int name;
struct student *next;
};
typedef struct student ppt;//取别名
ppt *jiao();
ppt *jiao()//创建这个结点
{
ppt *head, *zhong, *wei;
wei = (ppt *)malloc(sizeof(ppt));//开辟内存
//将next 赋值 null
wei->next = NULL;
zhong = wei;
scanf_s("%d,%d", &zhong->num, &zhong->name);//输入数据,中间用逗号隔开
int n;
n = 0;
head = NULL;
while (wei->num)//当输入数据num不为0的话执行,反之不符合要求,停止结点创建12
{
n = n + 1;
if (n == 1)//第一个结点
{
head = zhong;
}
else
{
zhong->next = wei;
zhong = wei;
}
wei = (ppt *)malloc(sizeof(ppt));//创建第二个结点及以上
//将next 赋值 null
wei->next = NULL;
scanf_s("%d,%d", &wei->num, &wei->name);//继续输入数据
}
zhong = NULL;//最后一个结点地址
return head;//返回头结点
}
int main()
{
ppt *lll;//定义一个指向结构体的指针变量
lll = jiao();//引用开辟结点函数
// 因为next 没有赋值null , 因此这是个死循环,到了最后一个节点其实是访问到了非法内存地址异常退出
while (NULL!=lll)//循环输出结点
{
printf("%d,%d", lll->num, lll->name);//((((输出后有点小问题,结果没什么问题,但放在程序上运行那就出现大问题;))))
lll = lll->next;
}
free(lll);//释放内存空间
return 0;//运行后结果正确出现了一个错误框架东西,看看你们电脑会不会出错,麻烦各位大哥了,我怀疑我电脑出问题。
}
|