#包含?& ltctype.h & gt
#包含?& ltstdlib.h & gt
#包含?& ltstring.h & gt
typedef?struct?記錄{
夏爾?標題[50];
夏爾?作者[20];
雙倍?價格;
int?數量;
struct?記錄?*下壹個;
}節點,* LinkList
鏈接列表?InitList()?{
節點?*頭?=?(節點?*)malloc(sizeof(Node));
head->;標題[0]?=?'\0';
head->;作者[0]?=?'\0';
head->;價格?=?0.0;
head->;數量?=?0;
head->;下壹個?=?NULL
回歸?頭;
}
作廢?添加(鏈接列表?頭)?{?//?頭部插入法
節點?*p?=?(節點?*)malloc(sizeof(Node));
fflush(stdin);
Printf("標題?:?");
獲取(p-& gt;標題);
Printf("作者?:?");
獲取(p-& gt;作者);
Printf("單價?:?");
scanf("%lf ",& ampp->;價格);
Printf("數量?:?");
scanf("%d ",& ampp->;數量);
p->;下壹個?=?head->;接下來;
head->;下壹個?=?p;
}
作廢?PrintBookList(LinkList?頭)?{
節點?*p?=?head->;接下來;
while(p)?{
Printf("標題?:?%s\n ",p-& gt;標題);
Printf("作者?:?%s\n ",p-& gt;作者);
Printf("單價?:?%.2lf元\n ",p-& gt;價格);
Printf("數量?:?%d \n\n ",p-& gt;數量);
p?=?p->;接下來;
}
系統(“暫停”);
}
作廢?排序(鏈表?頭)?{?//?選擇排序法
節點?*pt,*qt,*q,* p;
對於(p?=?頭;?p->;接下來;?p?=?p->;下壹個)?{
qt?=?p;
對於(q?=?p->;接下來;?q->;接下來;?q?=?q->;下壹個)
if(strcmp(Qt-& gt;下壹個-& gt;標題,q-& gt;下壹個-& gt;標題)?& gt?0)
qt?=?q;
如果(p?!=?qt)?{?//?調整節點位置
pt?=?p->;接下來;
p->;下壹個?=?Qt->;接下來;
Qt->;下壹個?=?Qt->;下壹個-& gt;接下來;
p->;下壹個-& gt;下壹個?=?pt;
}
}
}
int?刪除(鏈表?頭)?{
節點?*p,* q;
夏爾?標題[50];
Printf("請輸入妳要刪除的書的名字?:?");
獲取(標題);
對於(p?=?頭;?p->;接下來;?p?=?p->;下壹個)?{
if(strcmp(p-& gt;下壹個-& gt;標題,標題)?==?0)?{
q?=?p->;接下來;
p->;下壹個?=?q->;接下來;
免費(q);
Printf("圖書" %s "已成功刪除。\n”,標題);
回歸?1;
}
}
Printf("不好意思,找不到名字叫" %s "的書!\n”,標題);
回歸?0;
}
作廢?Modufy(鏈表?頭)?{
節點?*p?=?head->;接下來;
夏爾?標題[50];
int?安,旗;
做什麽?{
Printf("想修改書名?:?");
fflush(stdin);
獲取(標題);
旗幟?=?1;
while(p)?{
if(strcmp(title,p-& gt;標題)?==?0)?{
Printf("標題?:?");
獲取(p-& gt;標題);
Printf("作者?:?");
獲取(p-& gt;作者);
Printf("單價?:?");
scanf("%lf ",& ampp->;標題);
Printf("數量?:?");
scanf("%d ",& ampp->;數量);
旗幟?=?0;
打破;
}
p?=?p->;接下來;
}
if(flag)?Printf("找不到名為“%s”的書籍。\n”,標題);
不然呢?Printf("修改成功。\ n \ n ");
Printf("1,繼續修改0,返回主菜單\ n ");
scanf("%d ",& amp安);
}而(安?!=?0);
}
作廢?FreeList(鏈表?頭)?{
節點?*q,*p?=?頭;
while(p)?{
q?=?p->;接下來;
免費(p);
p?=?q;
}
}
作廢?菜單(作廢)?{
系統(“cls”);
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
Printf("*1,add 2,display * \ n ");
Printf("*3,秩4,delete * \ n ");
Printf("*5,修改6,退出* \ n ");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n \ n ");
}
int?main()?{
int?選擇;
鏈接列表?頭?=?InitList();
做什麽?{
menu();
printf("Enter?妳的?選擇?:?");
scanf("%d ",& amp選擇);
切換(選擇)?{
案子?1?:?加(頭);?打破;
案子?2?:?print book list(head);?打破;
案子?3?:?排序(頭);?打破;
案子?4?:?刪除(頭);?打破;
案子?5?:?Modufy(頭);?打破;
違約?:?打破;
}
}while(選擇?!=?6);
FreeList(頭);
printf("End!\ n ");
回歸?0;
}