• 用C结构体实现一个线性表一些基础准备


    • 实验环境win7操作系统下vs2017
    • 定义结构体用于存放教练信息
    struct mycoach
    {
        char name[60];
        int age;
        char skills[60];
    };
    • 定义线性表存放教练信息
    struct seqlist
    {
        struct mycoach* mch[10];//这里要用指针,否则操作系统将无法得知分配多少内存,
        int length;
        int lastid;
    };
    • 赋值测试,确保可以对线性表的每一元素顺利赋值
    void main()
    {
        struct seqlist* slist;
        slist = (struct seqlist*)malloc(sizeof(struct seqlist));
        slist->mch[0] = (struct mycoach*)malloc(sizeof(struct mycoach));
        strcpy(slist->mch[0]->name, "陈培昌");
        slist->mch[0]->age = 22;
        strcpy(slist->mch[0]->skills,"泰拳,散打");
        printf("姓名:%s
    ", slist->mch[0]->name);
        printf("年龄:%d
    ", slist->mch[0]->age);
        printf("武技:%s
    ", slist->mch[0]->skills);
       //及时释放内存空间是必要的 free(slist
    ->mch[0]); slist->mch[0] = NULL; free(slist); slist =NULL; system("pause"); }

    输出结果:

    • 封装过的一个版本
    #define _CRT_SECURE_NO_WARNINGS
    #define maxsize 1024
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    struct mycoach
    {
        char name[60];
        int age;
        char skills[60];
    };
    
    struct seqlist
    {
        struct mycoach* mch[maxsize];
        int length;
        int lastid;
    };
    
    int initlist(struct seqlist * l)
    {
        int  length,j=0;
        printf("初始化,准备输入几个档案信息
    ");
        scanf("%d",&length);
        for (j=0;j<length;j++)
        {
            l->mch[j] = (struct mycoach*)malloc(sizeof(struct mycoach));
            printf("输入教练姓名
    ");
            scanf("%s", &l->mch[j]->name);
            printf("输入教练年龄
    ");
            scanf("%d", &l->mch[j]->age);
            printf("输入教练武技
    ");
            scanf("%s", &l->mch[j]->skills);
        }
        printf("j的值是:%d
    ",j);
        l->lastid = j;
        printf("输入完毕~黎塞留主教大人!");
    }
    
    void printinfo(struct seqlist* slist)
    {
        int length = slist->lastid,j=0;
        for (j=0;j<length;j++)
        {
            printf("姓名:%s
    ", slist->mch[j]->name);
            printf("年龄:%d
    ", slist->mch[j]->age);
            printf("武技:%s
    ", slist->mch[j]->skills);
            free(slist->mch[j]);
            slist->mch[j] = NULL;
            printf("%s
    ", "======================");
    
        }
        
    }

    主函数调用

    void main()
    {
        struct seqlist * l;
        l = (struct seqlist*)malloc(sizeof(struct seqlist*));
        initlist(l);
        printf("
    %s
    ", "======================");
        printinfo(l);
        system("pause");
    }

    输出结果:

  • 相关阅读:
    部分和问题
    区间k大数训练
    蓝桥杯基础练习-数列排序
    蓝桥杯基础练习-特殊的回文数
    蓝桥杯基础练习-回文数
    蓝桥杯基础练习-特殊的数字
    蓝桥杯基础练习-杨辉三角
    蓝桥杯基础练习-查找整数
    蓝桥杯题库基础训练-数列特征
    三道半平面交测模板题 Poj1474 Poj 3335 Poj 3130
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/12092481.html
Copyright © 2020-2023  润新知