C语言数据结构(实验一)基于顺序表的图书馆系统CharonVan

#defineMAXSIZE1000//图表可能达到的最大长度

//定义图书表的顺序储存结构

//定义图书信息

typedefstruct

{

charno[20];//ISBN

charname[50];//书名

floatprice;//价格

}Book;

typedefstructnode//用于链表去重

longlongintno;

charname[50];

doubleprice;

structnode*next;

}Book1,*BookList;

//定义顺序储存结构类型

Book*elem;//储存空间基地址

intlength;//当前图书个数

}SqList;

typedefintStatus;

typedefintElemType;

//初始化一个顺序表

StatusInitList_Sq(SqList&L)

L.elem=newBook[MAXSIZE];//份配空间

if(!L.elem)//分配失败

exit(OVERFLOW);

}

L.length=0;//空表长度为0

returnOK;

//顺序表输入

StatusListInsert(SqList&L)

inti=1;

while(1)

if(i>MAXSIZE)//输入图书信息数超过最大值,退出

scanf("%s%s%f",L.elem[i].no,L.elem[i].name,&L.elem[i].price);//输入图书数据

if(!strcmp(L.elem[i].no,"0")&&!strcmp(L.elem[i].name,"0")&&L.elem[i].price==0)

break;//输入结束标志000则停止输入

i++;

L.length=i-1;

returni-1;

//顺序表逆序输入

StatusNListInsert(SqList&L)

inti,t;

scanf("%d",&i);

t=i;

if(i==0)//结束输入

break;

i--;

L.length=t;

returnL.length;

//顺序表输出

StatusListOutput(SqList&L)

for(inti=1;i<=L.length;i++)

printf("%s%s%.2f\n",L.elem[i].no,L.elem[i].name,L.elem[i].price);//输出图书信息表

//顺序表排序

boolcmp(BookL1,BookL2)//按照价格降序排序

if(L1.price>L2.price)

returntrue;

else

returnfalse;

StatusSqSort(SqList&L)

sort(&(L.elem[1]),&(L.elem[L.length+1]),cmp);

//顺序表修改价格

StatusSqprice(SqList&L)

floatavg=0;//平均价格

avg+=L.elem[i].price;//计算所有书的总价格

avg/=L.length;//所有书的平均价格=总价/书本数量

if(L.elem[i].price>=avg)//高于或等于平均价格的图书价格提高10%

L.elem[i].price*=1.1;

elseif(L.elem[i].price

L.elem[i].price*=1.2;

printf("%.2f\n",avg);//输出平均价格

//顺序表找最贵的书

StatusSqMax(SqList&L)

intn;//图书数目

printf("请输入数据:\n");

scanf("%d",&n);//输入图书数目

InitList_Sq(L);//初始化线性表

L.length=n;//给线性表中的图书数目赋值

if(n<1||n>MAXSIZE)

while(i<=n)

scanf("%s%s%f",L.elem[i].no,L.elem[i].name,&L.elem[i].price);//输入图书信息表

intmaxprice[MAXSIZE];//最贵图书在线性表中的编号

intlen=0,max=0;//len:最贵图书的数目max:最贵图书价格

for(inti=1;i<=n;i++)//查找最贵图书并记录其在线性表中的编号

if(L.elem[i].price>max)//找到更贵的图书

len=1;//更贵图书的数目记为1

maxprice[len]=i;//记录更贵图书在线性表中的编号

max=L.elem[i].price;//修改最贵图书价格

elseif(max==L.elem[i].price)//找到下一本最贵图书

len++;//最贵图书的数目加1

printf("%d\n",len);//输出最贵图书的数目

for(inti=1;i<=len;i++)//输出最贵图书的信息

intj;

j=maxprice[i];

printf("%s%s%.2f\n",L.elem[j].no,L.elem[j].name,L.elem[j].price);//根据编号输出最贵图书的信息

//顺序表找出最喜爱的书

StatusSqFavor(SqList&L)

intn;//图书数量

inti,j;

Bookb[MAXSIZE];

printf("请输入数据\n");

scanf("%d",&n);

for(i=0;i

scanf("%s%s%f",&b[i].no,&b[i].name,&b[i].price);

intm,t;//查找m次

scanf("%d",&m);

Bookb_1[MAXSIZE];

for(intk=0;k

scanf("%s",&b_1[k].name);

t=0;

for(j=0;j

if(!strcmp(b_1[k].name,b[j].name))

t++;

if(t==0)

printf("抱歉,这里没有你的最爱!\n");

printf("%d\n",t);

printf("%s%s%.2f\n",b[j].no,b[j].name,b[j].price);

//顺序表图书位置查找

StatusSqPlace(SqList&L)

for(i=1;i<=n;i++)

intm;//查找m次

intb_1[MAXSIZE];

scanf("%d",&b_1[k]);

for(j=1;j<=n;j++)

if(b_1[k]==j)//对应位置并输出

if(b_1[k]>i||b_1[k]<1)//位置不存在

printf("抱歉,最佳位置上的图书不存在!\n");

//顺序表新书入库

StatusSqEnter(SqList&L)

intn,j,i;

Bookin_b;

scanf("%s%s%f",L.elem[j].no,L.elem[j].name,&L.elem[j].price);

L.length=n;

if((i<1)||(i>L.length+1)||(i==MAXSIZE))

printf("抱歉,入库位置非法!\n");//i值不合法

returnERROR;

scanf("%s%s%f",&in_b.no,&in_b.name,&in_b.price);

for(j=L.length;j>=i;j--)

L.elem[j+1]=L.elem[j];//插入位置及之后的元素右移

L.elem[i]=in_b;//将新元素e放入第i个位置

++L.length;//表长加1

for(j=1;j<=L.length;j++)

printf("%s%s%.2f\n",L.elem[j].no,L.elem[j].name,L.elem[j].price);//输出图书信息表

//顺序表旧书出库

StatusSqDelete(SqList&L)

if((i<1)||(i>L.length))

printf("抱歉,出库位置非法!\n");//i值不合法

for(j=i+1;j<=n;j++)

L.elem[j-1]=L.elem[j];//删除位置及之后的元素左移

--L.length;//表长减1

//顺序表去重

StatusSqRepeat(SqList&L)

intn,j,i,t;

for(j=1;j<=n;j++)//输入

for(i=1;i<=n;i++)//书号循环对比

if(!strcmp(L.elem[i].no,L.elem[j].no))//重复删除

for(t=j+1;t<=n;t++)

L.elem[t-1]=L.elem[t];//删除位置及之后的元素左移

--n;//表长减1

--j;

printf("%d\n",n);

//定义链式储存结构类型

typedefstructLNODE

Bookelem;//数据域

LNODE*next;//指针域

}LNODE,*LinkList;

//初始化链表

StatusInit(LinkListL)

L=(LinkList)malloc(sizeof(LNODE));//分配结点空间

if(!L)

exit(OVERFLOW);//空间分配失败,退出

L->next=NULL;//下一本书的地址为空

returnOK;//空间分配完成

//链表输出数目

StatusLNum(LinkListL)

LinkListr=L;//输入

inti;

for(i=0;i

LinkListp=newLNODE;

scanf("%s%s%f",&p->elem.no,&p->elem.name,&p->elem.price);

if(!(strcmp(p->elem.no,"0"))&&!(strcmp(p->elem.name,"0"))&&p->elem.price==0){

p->next=NULL;

r->next=p;

r=p;

if(i)

printf("%d\n",i);

else//异常

LinkListp=L->next;//输出

while(p!=NULL)

printf("%s%s%.2f\n",p->elem.no,p->elem.name,p->elem.price);

p=p->next;

//链表输入(后插)

StatusInsert(LinkList&L)

LinkListr=L;//尾指针r指向头结点

for(i=1;i<=MAXSIZE;i++){

//链表输出

StatusLoutput(LinkListL)

LinkListp=L->next;

//链表排序

StatusLsort(LinkListL)

if(L->next==NULL||L->next->next==NULL)//线性表无元素或只有一个元素,无需排序

LinkListpre=L;//操作结点的前一个结点

LinkListnow=L->next;//操作结点

LinkListtail=NULL;//尾结点

while(L->next!=tail)//冒泡排序

pre=L;

now=L->next;

intflag=0;

while(now->next!=tail)

if(now->elem.pricenext->elem.price)

flag=1;

pre->next=now->next;

now->next=now->next->next;

pre->next->next=now;

pre=pre->next;

now=now->next;

if(flag==0)

tail=now;

//链表提高图书价格

StatusLprice(LinkList&L)

intnum=0;//图书数量

floatavg=0;//图书平均价格

while(p!=NULL)//遍历线性表

avg+=p->elem.price;//计算图书总价

num++;//统计图书数量

avg/=num;//图书均价=总价/图书数量

p=L->next;

if(p->elem.price>=avg)

p->elem.price*=1.1;//所有高于或等于平均价格的图书价格提高10%

elseif(p->elem.price

p->elem.price*=1.2;//所有低于平均价格的图书价格提高20%

printf("%.2f\n",avg);//输出图书均价

//链表逆序输出(头插)

StatusNInsert(LinkList&L)

intn,i;

LinkListp=L;

for(i=1;i<=n;i++)//输入

LinkListr=newLNODE;

scanf("%s%s%f",&r->elem.no,&r->elem.name,&r->elem.price);

r->next=p->next;

p->next=r;

for(i=1;i<=n;i++)//输出

//链表最贵图书

StatusLexpensive(LinkList&L)

intn,i,m,k;

LinkListr=L;

for(i=0;i

intmax=p->elem.price;

i=0;

while(p->elem.price==max)

while(p)

//链表最爱图书

StatusLFavor(LinkList&L)

intn,i,m,k,t;

r->next=NULL;

p=r;

scanf("%d",&k);//输入查找数目

//输入查找书名

Booka[MAXSIZE];

for(i=0;i

scanf("%s",&a[i].name);

{//遍历查找计算符合条件的书数量

m=0;

while(now->next)

if(!strcmp(now->elem.name,a[i].name))

m++;

//输出数量

if(m)

printf("%d\n",m);

else//未找到

printf("抱歉,没有你的最爱!\n");

//输出图书信息

printf("%s%s%.2f\n",now->elem.no,now->elem.name,now->elem.price);

THE END
1.2024年九曲阑干数据结构C语言《数据结构(C语言版)》内容分为两大部分,第1章至第10章为基础知识部分,第11章为综合应用部分。基础知识部分包括线性结构模块、非线性结构模块和简单的应用模块。综合应用部分包括新生报到信息注册系统设计模块和停车场管理系统设计模块。 1.成书过程 数据结构是软件技术、网络技术等计算机类专业的一门重要的专业基础课https://win7sp.com/post/32213.html
2.基于顺序表的图书信息管理系统用C语言实现顺序表实现的图书管理 4星 · 用户满意度95% 立即下载 定义图书类型结构,定义顺序表;完成功能:初始化构建空表、插入新记录到第i个位置、删除表中第i个记录、按图书名称进行查找、按作者进行查找、按价格区间进行查找。 展开 基于顺序表的图书信息管理系统通常是一个简单的数据结构应用,用于存储书籍的信息,如书名、https://wenku.csdn.net/answer/83qs11y17f
3.C语言数据结构(实验一)基于顺序表的图书馆系统51CTO博客C语言数据结构(实验一)基于顺序表的图书馆系统,代码如下:#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<algorithm>usingnamespacestd;//排序函数#definehttps://blog.51cto.com/u_15057841/4334181
4.C语言数据结构之图书借阅系统C语言这篇文章主要为大家详细介绍了C语言数据结构之图书借阅系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你想靠AI翻身,你先需要一个靠谱的工具!】本文实例为大家分享了C语言实现图书借阅系统的具体代码,供大家参考,具体https://www.jb51.net/article/240497.htm
5.数据结构课程(精选十篇)[2]严蔚敏.数据结构 (C语言版) [M].北京:清华大学出版社, 1998. 课程设计(数据结构) 篇2 1、运动会分数统计 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5https://www.360wenmi.com/f/cnkeyoeo50qe.html
6.数据结构(C语言)第2版慕课版图书本书重视算法及其实践性,书中算法都有完整的 C 语言程序,程 序代码注释详细。为了让读者能够及时地检验学习效果、把握学习进度,每章都附有丰富的习题。 本书可作为计算机、电子信息、管理信息系统、电子商务、教育技术等相关专业数据结构课程的本科教 材,也可以作为计算机软件工程技术人员的参考资料。https://www.ryjiaoyu.com/book/details/40257
7.数据结构(C语言第2版慕课版)《数据结构(C语言 第2版 慕课版)/21世纪高等教育计算机规划教材》将现代信息技术融入教学,突破了传统教学模式,通过慕课的形式全面阐述数据结构课程中的重点、难点,涵盖线性表、树、集合、图等内容,形成一套完整的包含知识点、习题、实验、慕课视频等的立体化教学资源,帮助学生进行自主式和研究性学习,为教师的传统课堂https://www.dushu.com/book/13673916/
8.西安邮电大学是一本吗是一本还是二本大纲:961计算机专业综合考试大纲(2008版) 一、考试组成 961计算机专业综合共包括四门课程的内容:计算机组成原理、数据结构、操作系统、数理逻辑,分别占40分、40分、40分、30分。 二、计算机组成原理部分的考试大纲 (一) 参考书 《计算机组成原理》,高等教育出版社,唐朔飞编著 https://www.whdxky.com/117052.html
9.课程本课程教学团队都有十年以上教授《算法与数据结构》课程的教学经历,根据教学实践,针对学生常出现的学习数据结构理论和实践编程相脱节问题,采用数据结构和高级语言程序设计(C语言)相融合的教学模式,内容内浅入深,通俗易懂,算法全部采用C语言编程描述,并对程序重点详细讲解,在编程中让学生不知不觉中掌握数据结构理论,并https://higher.smartedu.cn/course/62354cd89906eace048dc878
10.数据结构基于C语言实现的顺序表。程序数据结构(c语言版)题集答案 在网上找了好多,数据结构题集答案,这个是最全面,最完美的。 上传者:renzhehongyi时间:2011-07-25 基于C语言实现的顺序表以及基本接口实现 顺序表是一种线性存储结构,它采用一段连续的物理地址存储数据元素,具有元素随机存取、存储密度高、插入和删除操作效率低等特点。在顺序表中,数据元https://www.iteye.com/resource/superneng-3362852
11.学习课程总结(通用17篇)《数据结构与算法》这本书共有十一个章节。从第一章的数据结构和算法的引入,介绍了数据和数据类型、数据结构、算法描述工具、算法和算法评价四个方面的知识。第二章则介绍了顺序表及其应用的相关知识。从顺序表的基本概念开始,分别介绍了顺序表基本算法、顺序表基本算法性能分析、顺序表的应用。顺序表应用又涉及多方面https://m.yjbys.com/xuexi/zongjie/3137403.html
12.数据结构(C语言版)(第2版双色版)数据结构先修知识数据结构(C语言版)(第2版双色版)-数据结构先修知识-C语言复习大作业(课程设计) .docx,PAGE PAGE 2 数据结构先修知识 C语言复习大作业 课程设计题目 【C语言复习大作业】图书信息管理系统★★★ 【问题描述】 读取给定的图书文件book.txt中的信息(book.txt中部分https://m.book118.com/html/2023/0201/6144201221005042.shtm