zoukankan      html  css  js  c++  java
  • 用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");
    }

    输出结果:

  • 相关阅读:
    Could not get lock /var/lib/apt/lists/lock
    使用vmware提示无法打开内核设备 \.Globalvmx86: 系统找不到指定的文件
    Linux 下安装 MATLAB
    超级干货:Linux常用命令 & 实用命令万字总结!
    GNB 配置图图解
    GNB Linux 部署说明
    解决Firefox启动、打开网页慢、占用内存多
    【Git教程】如何清除git仓库的所有提交记录,成为一个新的干净仓库
    mount --bind和硬连接的区别
    彻底删除 Windows Defender
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/12092481.html
Copyright © 2011-2022 走看看