c语言作业:数据结构顺序表基础操作

bibi!

作为目前正在学习前端的小白 看到增删改查就只能想到js里面的语法 

这可不妙 还是得好好扎实一下c语言的基础

bobo!

学期末的c语言上机作业:

编写测试函数main()中的代码,定义学生数据,创建空表,向表中插入5个学生的信息,查询这5个学生的信息是否已经存在于表中上,然后再删除表中的3条信息,再次检查5个学生的信息哪些在表中哪些不在表中

!!!知识点

1. 数组指针和指针数组区别:

数组指针:

静态分配存储空间(不是临时存储空间,不会释放空间)

int (*p)[10];

动态分配存储空间

int *p;
p = new int[10];

指针数组:

定义一个数组,里面的成员都是指针类型

*p,*q,*r,... int *p[10];

2. 结构体的定义和声明

第一种: 比较麻烦

struct 结构体名 {
  成员列表
};
struct Student{  
    char *name;  //姓名  
    int num;  //学号  
    char sex;  //性别  
    float score;  //成绩  
};
// 此时定义变量 st1 st2 关键字struct不能省略
struct Student stu1, stu2;

第二种:

struct stu{  
    char *name;  //姓名  
    int num;  //学号  
    char sex;  //性别  
    float score;  //成绩  
} stu1, stu2; 

struct{  //没有写 stu  
    char *name;  //姓名  
    int num;  //学号  
    char sex;  //性别  
    float score;  //成绩  
} stu1;

3. 学会调用函数

数据结构的学习

主函数(需要学习掌握同学书写的代码)

#include <stdio.h>
#include <stdlib.h>
#include"list.c"

//遍历函数 
void print(SqList L) {
    int i;
	for(i=0; i<L.length;i++)
    {
        printf("%d %s %d\n",L.elem[i].id,L.elem[i].name,L.elem[i].score);

	}

	printf("表的长度为%d\n",L.length);
}

int main()
{
    SqList L;
    ElemType e;
    int i;
    //int id,score,i;
    //char name[10];
    InitList_Sq(&L);
    //printf("成功创建新的表\n");
    //printf("表的长度为%d\n",L.length);
    printf("向表中依次输入5个学生的数据:\n");
    i = 1;
    for(i=1;i<=5;i++)
    {
        printf("第%d个学生的数据:",i);
        scanf("%d %s %d",&e.id,e.name,&e.score);
        //printf("%d %s %d",e.id,e.name,e.score);
        if(ListInsert_Sq(&L,i,e))
            printf("插入成功\n");
        else
        {
            printf("插入失败\n");
            i--;    //纭繚鎻掑叆5涓鐢熸暟鎹?
        }
        print(L);
    }
    //查询数据是否在表中 
    int k=1;
    while(k==1)
    {
        printf("输入正确的数据进行查询:");
        scanf("%d %s %d",&e.id,e.name,&e.score);
        //printf("%d %s %d\n",e.id,e.name,e.score);
        LocateElem_Sq(&L,e,compare);
        if(LocateElem_Sq(&L,e,compare)!=0)
            printf("查询到在表中第%d位\n",LocateElem_Sq(&L,e,compare));
        else
            printf("表中无此数据,请确认输入是否完全正确\n");
        printf("是否继续查询:1是 2否\n");
        scanf("%d",&k);
    }
    printf("删除数据\n");
    int m;
    for(i=0;i<3;i++)
    {
        printf("删除第几位的数据:\n");
        scanf("%d",&m);
        if(ListDelete_Sq(&L,m,&e))
            printf("删除成功,此时表为:\n");
        else
        {
            printf("删除失败\n");
            i--;    // 确保删除三个数据 
        }
        print(L);
    }
    printf("查询5个学生数据哪些在表中\n");
    for(i=1;i<=5;i++)
    {
        printf("请输入第%d个学生的数据\n",i);
        scanf("%d %s %d",&e.id,e.name,&e.score);
        if(LocateElem_Sq(&L,e,compare)!=0)
            printf("该学生数据在表中\n");
        else
            printf("该学生数据不在表中\n");
    }

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值