C语言 如何调用链表里的数据?

老师教我们写了一个动态链表,但我想把功能扩展一下,能够调用里面的数据,不但怎么会。

我希望能用一个数组存放每个结构体的头地址,然后在指定第n个学生成绩时,能通过数组存放的头地址来输出对应存放的一组数据。注:不希望用二维数组存放所有数据,这样就不节省空间了。希望用一维数组仅存放头地址,来指向输出。

求大神帮帮我QAQ!

#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Student)

struct Student
{
    int num;                                                    //数据结构中放一个学生编号
    float score;                                                //数据结构中放一个成绩
    struct Student *next;                                       //放一个指向本结构体的指针
};

int n;                                                          //定义一个全局变量,n表示存放的第几个结构体
struct Student *start(void)
{
    struct Student *head, *p1, *p2;
    n = 0;
    p1 = p2 = (struct Student *) malloc(LEN);                   //在输入数值之前需要先分配内存
    scanf("%d,%f", &p1->num, &p1->score);                       //输入要存储的数值
    head = NULL;        
    while (p1->num != NULL)
    {
        n = n + 1;
        if (n == 1)head = p1;                                   //如果是输入了第一个数则链表开始分配内存,将第一个数据给head指针
        else p2->next = p1;
        p2 = p1;
        p1 = (struct Student *) malloc(LEN);                    //在开辟一个新的P1内存存储下一个数据
        scanf("%d,%f", &p1->num, &p1->score);
    }
    p2->next = NULL;
    return(head);
}

void print(struct Student *head)
{
    struct Student *p;
    printf("\nNow,These %d records are:\n", n);
    p = head;
    while (p != NULL)
    {
        printf("%d,%3f\n", p->num, p->score);
        p = p->next;
    }
}

int main(void)
{
    int s;
    struct Student *pt;
    pt = start();
    print(pt);
    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

2
c语言中两个链表的合并(不用结点的方式)总是错误的
1
c语言链表问题,希望能在10号之前得到解答
2
MFC 数据链表取随机数
1
C语言多项式加减运算(用链表)
0
采用循环队列的链表实现的方式的环路的设计,数据结构C语言习题的思路
1
关于c语言读取文件信息到链表,怎么操作?
1
C语言求助:输入一个字符串,将其中的字母字符输入一个链表,将其中的数字字符输入另一个链表。
0
数据结构两个变量的链表的综合运用,采用C程序的语言的代码的思路实现
0
在单链表中统计某区域内的元素,将获得元素插入新单链表,并打印新链表元素在原链表中的序号
1
菜鸟#c语言数据结构#二叉树链表
2
c语言静态链表无法成功赋值
1
C语言数据结构二叉树-目录树的基本操作求解?
1
用C语言完成以下功能:数据的录入、显示,链表的创建,插入数据,删除数据。每个功能用一个函数来实现。
3
c语言 free() 需要释放分配结构里面分配的结构内存么-贪吃蛇-链表
0
一道数据结构链表编程题
1
Java语言的数组,如何增加和缩小长度,要实现动态的改变不想用链表了
1
学习C语言版数据结构(严蔚敏版)时,按位获取单链表的值失败,怎么解决。
1
如何实现 链表的头结点是指针数组,再用二级指针调用?
2
Java语言编写程序一个链表,并且计算链表上所有数的和
1
c语言链表问题,请问一下我这个代码错在哪里,谢谢了