线性表(顺序存储结构)—图书信息管理系统c语⾔版L->length与L.length的区别是什么?
L->length L是数据对象 指针操作符
L.length L是指针 结构操作符
如果L是⼀个结构实例的指针,要⽤->访问结构⾥的变量,⽽不能⽤点
如果L是⼀个结构的实例⽽⾮指针,只能⽤点,⽽不能⽤->
具体分析和图书管理系统案例:
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100 //顺序表可能达到的最⼤长度
typedef int Status;//Status 是函数返回值类型,其值是函数结果状态代码。
typedef struct
{
int bookID;//书籍编号
char bookName[20];//书籍名称
double bookPrice;//书籍单机
} Book;
typedef Book DataType;
typedef struct
{
DataType *elem;//存储空间的基地址
int length;//长度
} BookList;
//初始化顺序表
Status InitList(BookList *L)
{
//构造⼀个空的顺序表L
L->elem=(DataType *)malloc(sizeof(DataType)*MAXSIZE);
L->length=0;
return OK;
}
//输⼊图书信息
void InputList(DataType *e){
printf("请输⼊图书编号:\n");
scanf("%d",&e->bookID);
printf("请输⼊图书名称:\n");
scanf("%s",&e->bookName);
printf("请输⼊图书价格:\n");
scanf("%lf",&e->bookPrice);
}
/
/输出图书信息
void OutputList(DataType *e)
{
printf(" %d %s %.2lf\n", e->bookID, e->bookName, e->bookPrice);
}
//新增图书信息
int InsertList(BookList *L,int i,DataType e){
int j;
if(i<1||i>L->length){
printf("插⼊位置不合法\n");
return-1;
}else if(L->length>=MAXSIZE){
printf("顺序表已满,不能插⼊元素\n");
return0;
}else{
for(j=L->length;j>=i;j--){
L->elem[j]=L->elem[j-1];
}
L->elem[i-1]=e;
L->length=L->length+1;
}
return1;
}
//删除图书信息
int DeleteList(BookList *L,int i,DataType *e){
int j;
if(L->length<=0){
printf("顺序表已空不能进⾏删除\n");
return0;
}else if(i<1||i>L->length){
printf("顺序表删除位置不合适\n");
return-1;
}else{
*e=L->elem[i-1];
for(j=i;j<L->length;j++){
L->elem[j-1]=L->elem[j];
}
L->length=L->length-1;
printf("删除数据:\n");
printf(" %d %s %.2lf\n", e->bookID, e->bookName, e->bookPrice); }
return1;
}
//修改图书信息
int UpdateList(BookList *L,int i,DataType e){
int j;
if(L->length<=0){
printf("顺序表已空不能进⾏修改\n");
return0;
}else if(i<1||i>L->length){
printf("顺序表修改位置不合适\n");
return-1;
}else{
L->elem[i-1]=e;
}
return1;
}
//按序号查询图书信息
int GetList(BookList *L,int i,DataType *e){
if(i<1||i>L->length){
return-1;
}
*e=L->elem[i-1];
printf("按序号查询数据:\n");
printf(" %d %s %.2lf\n", e->bookID, e->bookName, e->bookPrice); return1;
}
//按图书名称查询图书信息
int LocationList(BookList *L,DataType e){
int i;
for(i=0;i<L->length;i++){
//!strcmp(bl->elem[i].name,e.name)
if(!strcmp(L->elem[i].bookName,e.bookName))
{
printf(" %d %s %.2lf\n", L->elem[i].bookID, L->elem[i].bookName, L->elem[i].bookPrice); return1;
}
}
return0;
}
//main主运⾏函数
int main(){
BookList L;
int n,num,i,flag=0,nums;
DataType e;
do{
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");
printf("请根据提⽰操作!\n");
scanf("%d",&n);
switch(n){
case1:
if(InitList(&L))
printf("成功建⽴顺序表\n\n");
else
printf("顺序表建⽴失败\n\n");
break;
case2:
printf("请输⼊图书的数量<100: \n");
scanf("%d",&num);
if(num>100){
printf("===============请按照要求输⼊=============\n");
}else{
for(int i=0;i<num;i++){
printf("第%d种数据:\n",i+1);
InputList(&L.elem[i]);//L.elem[i]是DataType
}
L.length=num;
}
break;
case3:
printf("当前图书总数为:%d\n",L.length);
printf("当前顺序表为:\n");
printf("图书编号图书名称图书价格\n");
for(i=0; i<L.length; i++){
OutputList(&L.elem[i]);
}
printf("\n");
break;
case4:
printf("请输⼊新增图书的位置:\n");
scanf("%d",&num);c语言listinsert函数
printf("请输⼊要新增的图书信息:\n");
printf("请输⼊图书编号:\n");
scanf("%d",&e.bookID);
printf("请输⼊图书名称:\n");
scanf("%s",&e.bookName);
printf("请输⼊图书价格:\n");
scanf("%lf",&e.bookPrice);
if(InsertList(&L,num,e)){
}else{
printf("新增数据失败\n");
}
break;
case5:
printf("请输⼊删除图书的位置:\n");
scanf("%d",&num);
if(DeleteList(&L,num,&e)){
printf("删除数据成功\n");
}else{
printf("删除数据失败\n");
}
break;
case6:
//修改图书信息
printf("请输⼊修改图书的位置:\n");
scanf("%d",&num);
printf("请输⼊要修改的图书信息:\n");
printf("请输⼊图书编号:\n");
scanf("%d",&e.bookID);
printf("请输⼊图书名称:\n");
scanf("%s",&e.bookName);
printf("请输⼊图书价格:\n");
scanf("%lf",&e.bookPrice);
if(UpdateList(&L,num,e)){
printf("修改数据成功\n");
}else{
printf("修改数据失败\n");
}
break;
case7:
printf("==========请输⼊查询图书信息的类型==========\n");
printf("1.按位置编号查\n");
printf("2.按图书名称查\n");
scanf("%d",&num);
if(num==1){
printf("输⼊查询位置编号:\n");
scanf("%d",&nums);
if(GetList(&L,nums,&e)){
printf("查询数据成功\n");
}else{
printf("查询数据失败\n");
}
}else if(num==2){
printf("输⼊查询图书名称:\n");
scanf("%s",&e.bookName);
if(LocationList(&L,e)){
printf("查询数据成功\n");
}else{
printf("查询数据失败\n");
}
}else{
printf("请输⼊正确的编号\n");
}
break;
case0:
flag=1;
printf("你已退出了此系统\n");
break;
default:
printf("请输⼊正确的数字\n");
break;
}
}while(flag!=1);
return0; }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论