第三周-链表

本文介绍了C语言中结构体的声明位置与其作用范围的关系,以及结构体变量之间的赋值操作。通过示例展示了如何对结构体数组进行排序,以及如何建立和遍历静态链表。讲解了输入、排序和查找最大值的函数实现,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

一、学习笔记

1.结构体的声明在主函数内还是外?为什么有的在内有的在外?

在函数内部声明的结构类型只能在函数内部使用 在函数外部声明的结构类型可以被多个函数使用。

2.同类的结构体变量可以相互赋值

3.

4.让p指向下一个结点:因为这个结点的成员next就是指向下一个结点的,所以只需要让这个结点的next的值赋给p就可以了:也就是p=p->next.

二、课件中的测试

1. 

#include <stdio.h>
int main()
{
    struct Student
    {
        int num;
        char name[20];
        float score;
    };
    struct Student stu[5] = {{1, "Zhang", 78}, {2, "Wang", 98.5}, {3, "Li", 86}, {4, "Ling", 73.5}, {5, "Sun", 100}};
    struct Student temp;
    const int n = 5;
    int i, j, k;
    printf("The order is:\n");
    for (i = 0; i < n - 1; i++)
    {
        k = i;
        for (j = i + 1; j < n; j++)
            if (stu[j].score > stu[k].score)
                k = j; //排序
        temp = stu[k];
        stu[k] = stu[i];
        stu[i] = temp; //同类的结构体变量可互相赋值
    }
    for (i = 0; i < n; i++)
        printf("%6d%8s%6.2f\n", stu[i].num, stu[i].name, stu[i].score);
    printf("\n");
}

2. 

#include <stdio.h>
#define N 3
struct Student
{
    int num;
    char name[20];
    float score[3];
    float aver;
};
void input(struct Student a[]) //用一个数组名来接收指针,这时a[i]就是stu[i]
{
    int i;
    for (i = 0; i < N; i++)
        scanf("%d%s%f%f%f", &a[i].num, a[i].name, &a[i].score[0], &a[i].score[1], &a[i].score[2]); //a[i].name已经是数组名了,是地址了,不需要再在前面加&
    for (i = 0; i < N; i++)
    {
        a[i].aver = (a[i].score[0] + a[i].score[1] + a[i].score[2]) / 3.0;
    } //调用input函数来输入,并且计算aver(就是为了计算aver才传递指针,否则形参值改变不会影响实参值)
}
void max(struct Student a[])
{
    struct Student temp;
    int i, j;
    for (i = 0; i < N - 1; i++)
        for (j = 0; j < N - 1 - i; j++)
            if (a[i].aver < a[i + 1].aver)
            {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
    printf("%d %s %f %f %f\n", a->num, a->name, a->score[0], a->score[1], a->score[2], a->aver);
}
int main()
{
    struct Student stu[N], *p = stu;
    input(p);
    max(p);
    return 0;
}

3. 很重要!!!!!​​​​​​​

#include <stdio.h>
int main() //建立一个以三个学生数据为结点的静态链表
{
    struct Student
    {
        int num;
        float score;
        struct Student *next; //指针变量,指向一个结构体变量
    };
    struct Student a, b, c, *head, *p;
    a.num = 99101;
    a.score = 89.5;
    b.num = 99103;
    b.score = 90;
    c.num = 99107;
    c.score = 85;
    head = &a;
    a.next = &b;
    b.next = &c;
    c.next = NULL; //也就是c是最后一个结点
    //下面开始输出链表,因为现在这个静态链表已经建立好了
    p = head;          //让指针p和头指针head指向相同
    for (; p != NULL;) //满足条件p!=NULL才进行循环,否则不循环。也就是到达最后一个结点就退出循环了
    {
        printf("%d %f\n", p->num, p->score); //打印p指向的那个结点的真实数据
        p = p->next;                         //将p所指向的变量的成员next的值(也就是下一个结点的地址)赋给p,也就是让p指向下一个结点
    }
    return 0;
}

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
weixin102旅游社交微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值