#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);?}}
這個程序有錯,怎么修改。
慕粉0859542940
2017-04-03 08:35:20