c语言-C语言链表创建问题..123

问题描述

C语言链表创建问题..123

#include"stdafx.h"
#include
#define LEN sizeof(student)
struct student{
int num;
float score;
student *next;
};
student * creat(){
int num;
float score;
student *head, *p,*q;

q=p=head = (student *)malloc(LEN);
head->num = NULL;
scanf_s("%d%f",&num,&score);
while (num != 0)//如果输入0的话就当成结束
{
    p = (student*)malloc(LEN);
    p->num = num;
    p->score = score;
    p->next = NULL;
    q->next = p;
    q = p;
    scanf_s("%d%f",&num,&score);
}
p->next = NULL;
return head;

}
void print(student * head){
student *p;
p = head;
for (; p->next != NULL;)
{
printf("%d %f", p->next->num, p->next->score);
p = p->next;
}

}
void main(){
student *head;
creat();
head = creat();
print(head);

}
//我输入
1 20
2 30
3 40
0 10
的话没有输出什么东西啊

解决方案

主函数里为什么会有两个creat函数调用,我把你的代码测试了一下,去掉第一个creat 是可以运行成功的,也有输出信息。另外你的代码缺少标准库能编译通过吗?希望有所帮助。
#include
#include
#define LEN sizeof(student)

struct student{
int num;
float score;
student *next;
};

student * creat(){
int num;
float score;
student head, *p,*q;
q=p=head = (student *)malloc(LEN);
head->num = NULL;
scanf("%d%f",&num,&score);
while (num != 0)//如果输入0的话就当成结束
{
p = (student
)malloc(LEN);
p->num = num;
p->score = score;
p->next = NULL;
q->next = p;
q = q->next;
scanf("%d%f",&num,&score);
}
p->next = NULL;
return head;

}
void print(student * head){
student *p;
p = head;
for (; p->next != NULL;)
{
printf("%d %f", p->next->num, p->next->score);
p = p->next;
}

}
int main(){
student *head;
head = creat();
print(head);

return 0;
}

解决方案二:

什么都没输出么?
应该输出了head所指向的头节点空间地址吧

解决方案三:

你的main里怎么有两个creat().....

解决方案四:

在函数student* create()写的有问题。你想要加入学生的学号,成绩,姓名信息,使用了链表。但是你的create函数并没有真正的给你创建信息。因为你需要在函数调用之前传入你要创建的student结构体,所以要传参。另外你的头结点使用并不正确,可以在看看书上的代码。感觉利用顺序存储结构(使用数组)会更简单些。希望有帮助

解决方案五:

 p->num = num;
    p->score = score;
    p->next = NULL;
    q->next = p;
    q = p;
    scanf_s("%d%f",&num,&score);

这个应该先调用scanf_s,再给p->num = num; 赋值

解决方案六:

参考代码段
https://github.com/707wk/Senior-middle-school/blob/master/Filling%20in%20the%20gaps.c

时间: 2024-09-16 07:30:27

c语言-C语言链表创建问题..123的相关文章

用C语言实现数据结构的链表创建时出错

问题描述 用C语言实现数据结构的链表创建时出错 请教大家,下面的程序哪里有错啊?十分感谢 #include "stdio.h" #include "malloc.h" #include "stdlib.h" #define NULL 0 #define OK 1 typedef int ElemType; typedef int Status; typedef struct LNode{ ElemType data; struct LNode *

c语言-C语言(数据结构)链表创建问题

问题描述 C语言(数据结构)链表创建问题 #include #include//含malloc.h #define LEN sizeof( Faction) //一元多项式结构体 typedef struct Faction{ int coefficient;//系数 int exponent;//指数 struct Faction next; }Faction; //创建链表 Faction *creat() { Faction *head, *p1, *p2; head = NULL; p1

c语言 链表-数据结构链表创建出错

问题描述 数据结构链表创建出错 麻烦大家帮我看看哪里出错了,十分感谢啊 #include "stdio.h" #include "malloc.h" #include "stdlib.h" #define NULL 0 #define OK 1 typedef int ElemType; typedef int Status; typedef struct LNode{ ElemType data; struct LNode *next; }LN

c语言-C语言新人关于链表的问题

问题描述 C语言新人关于链表的问题 如何实现对一个链表进行排序后的输出,但是不改变链表本身. 不能新建链表来拷贝. 解决方案 我也是新人,如果是这样的话.会比较麻烦.我的想法是这样的.先找到链表尾.知道一共有多少个数据,然后创建一个结构体数组,结构体中定义Int 排序,你的类型指针变量,排序后将排序的顺序存入数组.将链表地址存入指针变量,建一个循环,依次输出.不过此种方法依然需要建一个数组.不知道行不行 解决方案二: 必须借助内存空间,完成排序工作. 解决方案三: 你把链表的每个元素读出来存到一

c语言-C语言建立单链表的问题

问题描述 C语言建立单链表的问题 #include<stdio.h> #include<stdlib.h> struct node { int num; int L; struct node *next; }; typedef struct node LN; typedef struct { int num1[100]; int L1; }S; void Creat1(S &p); void Creat(LN *p); void main() { S p; LN *h; p

C语言之单向链表详解及实例代码_C 语言

1,单向链简洁. 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始:链表是使用指针进行构造的列表:又称为结点列表,因为链表是由一个个结点组装起来的:其中每个结点都有指针成员变量指列表中的下一个结点:列表是由结点构成,由head指针指向第一个成为表头的结点而终止于最后一个指向nuLL的指针: 2,例子要求: 根据示例代码中的例子,完成单向链表(single linked list)中的以字符串为数据的链表的插入.删除以及查找,并支持单向链表的反转

C语言之单链表的插入、删除与查找_C 语言

单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.要实现对单链表中节点的插入.删除与查找的功能,就要先进行的单链表的初始化.创建和遍历,进而实现各功能,以下是对单链表节点的插入.删除.查找功能的具体实现: #include<stdio.h> #include<stdlib.h> #include<string.h> typedef int ElemType; /** *链表通用类型 *ElemType 代表自定义的数据类型 *struct

c语言如何把链表数据写入文件?

问题描述 c语言如何把链表数据写入文件? 在写一个通讯录管理系统,然后要把联系人的信息结构体放到链表中,然后将链表里的信息写入文件中,下次打开时还能从该文件读出数据. 链表头指针TEL,结构体中有name,tel,style,mail 四项,存入"telephone.txt"中. 我是这样写的 /*退出程序时将数据写回telephone.txt进行更新*/ void ReadBack() { FILE *TEL = fopen("telephone.txt",&qu

c++-C语言,请教关于创建二叉树的问题

问题描述 C语言,请教关于创建二叉树的问题 void CreatBiTree(BiTree *T) 为什么是BiTree *T,而不是 BiTree T? #include typedef struct BiTNode { char data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree; void CreatBiTree(BiTree *T) { char c; scanf("%c", &c); if (c == '