C语言数据结构实现顺序表增删改差(数据结构第一次实验)
来源:互联网 发布:网络信息管理办公室 编辑:程序博客网 时间:2024/05/24 22:44
本次博客记录C语言第一次数据结构作业,部分参考了
1.严蔚敏版C数据结构
2.http://blog.csdn.net/wang907553141/article/details/52607380
但是大部分逻辑时自己实现,由于基础不好,所以逻辑比较混乱
Lab1 线性表的基本操作及其应用
课程名:数据结构
实验目的:
1、掌握线性表的定义;
2、掌握线性表的基本操作,如建立、查找、插入和删除等。
实验要求:定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表,使其具有如下功能:
(1) 根据指定学生个数,逐个输入学生信息;
(2) 逐个显示学生表中所有学生的相关信息;
(3) 根据姓名进行查找,返回此学生的学号和成绩;
(4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩);
(5) 给定一个学生信息,插入到表中指定的位置;
(6) 删除指定位置的学生记录;
(7) 统计表中学生个数。
实验题目:线性表的基本操作及其作用
实验过程:
按照实验要求编写相应程序代码,并调试运行。
附:顺序表与链表操作的主函数代码。
运行演示过程如下(这部分不需要写到报告上):
1、 创建一个学生表(5个学生);
2、 显示该表中所有的元素;
3、 根据姓名查找到第3个学生的信息并显示;
4、 插入一个新的学生并显示全部学生信息;
5、 删除第3个学生的信息并显示全部学生信息;
6、 统计学生表中元素的个数(即学生人数);
7、 退出
#include<stdio.h>#include<stdlib.h> #include<string.h> #define OK 1 #define ERROR 0 #define MAXSIZE 100typedef int Status; typedef struct{int id;char name[20];int score;}Student;typedef Student ElemType; typedef struct{ElemType *elem;int length; }SqList;//创建顺序表操作// Status Creat(SqList &L){L.elem=new ElemType[MAXSIZE];if(!L.elem) return ERROR;L.length=0;return OK; }//给顺序表添加基本学生信息操作// Status Insert(ElemType *e){printf("请输入学生的学号:");scanf("%d",&e->id);printf("请输入学生的姓名:");scanf("%s",&e->name);printf("请输入学生的成绩:");scanf("%d",&e->score);}//显示所有学生信息操作// Status Output(ElemType *p){printf("%d\t",p->id);printf("%s\t",p->name);printf("%d\n",p->score);}//根据学号查询操作// Status Search(ElemType *p,char f[20]){if(strcmp(p->name,f)==0){printf("该生的学号是:%d\n",p->id);printf("该生的学号是:%s\n",p->name);printf("该生的学号是:%d\n",p->score);return OK;}}//插入操作// Status Add(ElemType *p0,ElemType *p1,SqList &L,int i){if(p1->id<p0->id){//插入的学生不在末尾时 //for(int s=L.length;s>=i+1;s--){L.elem[s]=L.elem[s-1]; }L.elem[i]=*p1;L.length+=1;return OK;}else{//插入的学生在末尾时// if(i==L.length-1){printf("ssssssssssssssssssssssssssss\n");L.elem[i+1]=*p1;L.length+=1;return OK;}}return ERROR;}//删除操作// Status Delete(SqList &L,int d,ElemType *p,int i){if(p->id==d){if(i!=L.length-1){//删除的学生不再末尾时// for(i;i<=L.length-2;i++){ L.elem[i]=L.elem[i+1];}L.length=L.length-1;return OK;}else{//删除的学生在末尾时// L.length=L.length-1;return OK;}}}int main(){SqList L;int choose,r,p;printf("====================================\n");printf("欢迎使用学生成绩管理系统V1.00\n");printf("功能如下:\n");printf("输入1:创建空的顺序表\n");printf("输入2:添加学生的信息\n");printf("输入3:显示顺序表所有学生的信息\n");printf("输入4:根据姓名查找学生的信息\n");printf("输入5:插入一个新的学生\n"); printf("输入6:删除一个学生的信息\n");printf("输入7:统计表中的学生个数\n");printf("输入0:退出系统\n");printf("====================================\n");while(1){printf("请选择命令:");scanf("%d",&choose);if(choose==0){printf("非常感谢您使用本系统!");break;}switch(choose){case 1:r=Creat(L);if(r==1){printf("创建顺序表成功!\n");}else{printf("创建顺序表失败!\n");}break;case 2:int num;printf("请输入创建的学生数:");scanf("%d",&num); for(int i=0;i<=num-1;i++){Insert(&L.elem[i]);L.length+=1; }break;case 3:printf("id\t");printf("name\t");printf("score\n");for(int i=0;i<=L.length-1;i++){Output(&L.elem[i]);}break;case 4:int result_Search;char f4[20];printf("请输入要查找的学生的姓名:");scanf("%s",&f4);for(int i=0;i<=L.length-1;i++){result_Search=Search(&L.elem[i],f4);}if(result_Search==1){printf("查询成功!\n");}break;case 5:ElemType newstu;Insert(&newstu);int add;for(int i=0;i<=L.length-1;i++){add=Add(&L.elem[i],&newstu,L,i);if(add!=1){continue;}else{printf("插入成功!\n");break;}}break;case 6:int delstu;int del_result;printf("请输入要删除的学生的学号:");scanf("%d",&delstu);for(int i=0;i<=L.length-1;i++){del_result=Delete(L,delstu,&L.elem[i],i);if(del_result==1){printf("删除成功!\n");break;}}break;case 7:printf("当前表中共有%d个学生!\n",L.length);break;}}return 0;}本次实验中出现了一个折磨了我2个小时的Bug:
定一个整型变量add,如果add等于一个整型函数的返回值,且该函数没有return,每调用一次add的值就会从0开始加1,调用5次就加到5。
最开始的时候没有注意,调试了很长时间,所以整型函数一定要有返回值。
阅读全文
1 0
- C语言数据结构实现顺序表增删改差(数据结构第一次实验)
- C语言:动态顺序表的增删查改,数据结构
- 图书管理程序(数据结构c语言实现增删改查)
- 【数据结构】实现顺序表(c语言)
- 数据结构线性表的动态顺序实现增删改查
- 数据结构顺序表的“增删改查”功能实现
- 【数据结构】顺序表的增删改查
- 数据结构顺序表的增删查改
- C语言:静态顺序表的增删查该,数据结构
- C语言实现顺序表增删查改操作
- C语言实现对顺序表的增删改查
- C语言实现数据结构中的顺序表
- c语言实现数据结构顺序表源代码
- 数据结构C语言实现之顺序表
- 数据结构--顺序表c语言实现
- 【数据结构】C语言实现顺序表
- 【数据结构】C语言实现顺序链表
- [c语言]数据结构 顺序表的实现
- 服务器管理
- 第五章 JAVA Bean技术
- Unity_流的常用操作与字节数组的相互转换
- Android Volley框架源码解析
- [codeforces107C][51nod1579]席位安排
- C语言数据结构实现顺序表增删改差(数据结构第一次实验)
- 联想ideapad300s重置电脑出现初始化失败的问题
- Error:scalac: missing or invalid dependency detected while loading class file 'RDD.class'.问题
- 【Java面试题】数据库三范式
- 全球智能化商业峰会本周四举行 涂鸦智能平台战略升级
- 融资快讯 | 深鉴科技刚刚宣布获资蚂蚁金服三星领投4000万美元A+轮
- 最大特斯拉超充站落户上海 中国AI学会公布首批会士名单
- 对话 | 华为朱平:AI技术让手机满足千人千面需求
- 讯飞1024计划公布 砸下10.24亿豪赌人工智能【附现场PPT】