#include<stdio.h>typedef struct { int year; int month; int day;}Data;typedef struct{ int id; //图书编号 char name[20];//图书名 int price;//价格 Data pubData;//出版日期}Book;typedef Book ElemType;typedef struct LNode{ Book data; struct LNode *next;}LNode;int InsertList(LNode *L,int i,ElemType e){ int j; LNode *p,*q; //初始化,指向头结点,并初始化计数器j=0 p=L;j=0; //循环:将指针指向第i-1个结点 while(p!=NULL&&j<i-1) { p=p->next; j++; } //检果i是否正确(1<=i<=n+1) j>i-1时,i<1 if(p==NULL||j>i-1)return 0;//p==NULL时,i>n+1 //分配空间并插入 if(q==NULL)return 0; q->data=e; q->next=p->next; p->next=q; return 1;}void display(LNode *L){ LNode *p; p=L->next; printf("\t书号\t%-16s价格\t出版日期\n","书名"); while(p!=NULL) { printf("\t%d\t%-16s%d\t%d-%d-%d\n" ,p->data.id,p->data.name,p->data.price ,p->data.pubData.year ,p->data.pubData.month ,p->data.pubData.day); p=p->next; }}//菜单void menu(LNode *L){ int a,loc; int e,result; int select; int InsertList; do { system("cls");//清屏 printf("\t****************************\n"); printf("\t*1.添加新的图书 *\n"); printf("\t*2.删除指定图书 *\n"); printf("\t*3.查找指定图书(书名) *\n"); printf("\t*4.修改图书信息 *\n"); printf("\t*5.显示所有的图书 *\n"); printf("\t*0.退出 *\n"); printf("\t****************************\n"); printf("\t请输入操和代码:"); scanf("%d",&select); switch(select) { case 1: //插入一个元数到指定位置 printf("\t请输入要插入的元素:"); scanf("%d",&e); printf("\t请输入要插入的位置:"); scanf("%d",&loc); result=InsertList(a,loc,&e); if(result==0)printf("\t插入元素%d失败!\n",e); else printf("\t插入元素%d成功!\n",e); system("pause"); break; case 2: //删除指定位置的元素符号 printf("\t请输入要删除的位置:"); scanf("%d",&loc); result=DeleteList(a,loc,&e); if(result==0)printf("\t删除第%d个元素失败!\n",loc); else printf("\t删除第%d个元素成功!该值为:%d\n",loc,e); system("pause"); break; case 3: //查找指定元素的位序 printf("\t请输入要查找的元素:"); scanf("%d",&e); loc=LocateList(a,e); if(loc==0)printf("\t查找元素%d失败!\n",e); else printf("\t查找元素%d成功!该元素的位序是:%d\n",e,loc); system("pause"); break; case 4: //修改图书信息 printf("\t请输入要修改图书信息:"); scanf("%d",&e); loc=ModifyList(a,e); if(loc==0)printf("\t修改图书信息%d失败!\n",e); else printf("\t修改图书信息%d成功!该图书信息是:%d\n",e,loc); system("pause"); break; case 5: //显示所有的元素 display(L); system("pause"); break; case 0: //退出 printf("\t请问是否确定要退出程序!(Y/N)"); //接收用户输入的选择并执行是否要退出的功能 exit(0); break; } }while(select<0||select>5);}int main(){ LNode H; Book book1={1,"数据结构",34,{2014,1,25}}; Book book2={2,"C语言程序设计",31,{2013,11,12}}; Book book3={3,"Java面向对象",42,{2015,8,1}}; Book book4={4,"Web应用开发",68,{2016,10,18}}; Book book5={5,"Android开发基础",75,{2017,3,30}}; H.next=NULL; InsertList(&H,1,book1); InsertList(&H,2,book2); InsertList(&H,3,book3); InsertList(&H,4,book4); InsertList(&H,5,book5); while(1) { menu(&H); }}
2 回答
zhonzxad
TA贡献1条经验 获得超0个赞
大致放到编译器里游览了一下楼主的程序,好多变量楼主作为函数中定义,但同时在另外的函数内部,又当做了同名变量使用。另外楼主使用了许多未定义函数,楼主检查一下是否头文件没包含。
- 2 回答
- 0 关注
- 1236 浏览
添加回答
举报
0/150
提交
取消