本文是依据数据结构习题解析与实验指导(李冬梅)一书中的第一个实验–基于线性表的图书信息管理系统所写的。
之所以写这个,是因为这个实验不仅涉及到线性表的结构设计,还包括一些线性表的基本操作,个人认为,做完这个实验,基本上对线性表就有一个基本的了解的。
本文采用编程语言为C
先说一下题目简介,自己设计一张图书信息表,包括以下10项常用的基本操作:图书信息表的创建和输出、排序、修改、逆序村春、最贵图书的查找、最爱图书的查找、最佳位置图书的查找、新图书的入库、旧图书的出库、图书去重。
要求分别用顺序存储结构和链式存储结构来实现。
文章目录
1.顺序存储结构
1.首先说一下定义的结构:
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 20
typedef struct{
char number[100];
char name[100];
float price;
}information;
typedef struct Node{
information date[MAXSIZE];
int length;
}table;
2.初始化操作
table Init(){
table t;
t.length=0;
return t;
}
还有显示操作:
void ShowTable(table *T){
ChangePrice(T);
for(int i=0;i<T->length;++i){
printf("%s %s %.2f\n",T->date[i].number,T->date[i].name,T->date[i].price);
}
}
3.表的创建和输出(因为输入是有一定的格式的,详情请看书,本人有点懒,没有搜到相关pdf,又不喜欢打字,就辛苦你们了🙃)输入以0 0 0 结束
void CreateTable(table *T){
for(int i=T->length;;++i){
scanf("%s %s %f",&T->date[i].number,&T->date[i].name,&T->date[i].price);
if(T->date[i].number[0]=='0'){
break;
}
else{
T->length++;
}
}
}
4.表的排序(按照图书价格降序排列)
void SortTable(table *T){
for(int i=0;i<T->length;++i){
for(int j=i+1;j<T->length;++j){
if(T->date[i].price<T->date[j].price){
information temp;
temp=T->date[i];
T->date[i]=T->date[j];
T->date[j]=temp;
}
}
}
}
5.表的修改(修改图书相应的价格,这里不厚道的😀)
void ChangePrice(table *T){
float sum=0;
for(int i=