#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
char bname[100];
char bno[100];
}BOOK;
typedef struct
{
BOOK *elem;
int len;
int listsize;
}LIST;
int Init(LIST *q,int maxsize);//空表
void input(LIST *q,int k);//连续输入在表头
int Insert(LIST *q, int pre,BOOK x);//任意位置插入
int del(LIST *q,int pre);//任意位置删除
int find(LIST *q,char bname[100]);//按照书名查找
int FIND(LIST *q,int i);//按照位置查找
void output(LIST *q);//输出
void main()
{
int k,n,p1,p2,p3,maxsize;
BOOK x;
LIST *L=NULL;
char name[100];
scanf("%d",&n);
switch(n)
{
case 1:printf("请输入最大容量:");
scanf("%d",&maxsize);
Init(L,maxsize);
case 2:printf("请输入输入本数:");
scanf("%d",&k);
input(L,k);
case 3:printf("请输入插入位置:");
scanf("%d",p1);
printf("请输入一本书的信息:");
gets(x.bname);
gets(x.bno);
Insert(L,p1,x);
case 4:printf("请输入删除的位置:");
scanf("%d",&p2);
del(L,p2);
case 5:printf("请输入书名:");
gets(name);
find(L,name);
case 6:printf("请输入查找位置:");
scanf("%d",p3);
FIND(L,p3);
case 7:output(L);
}
}
int Init(LIST *q,int maxsize)
{
q->elem=(BOOK*)malloc(maxsize* sizeof(BOOK));
if(q->elem==NULL)
{
printf("error!");
return 0;
}
q->listsize=maxsize;
q->len=0;
return 1;
}
int Insert(LIST *q, int pre,BOOK x)
{
int i;
if(pre<=0||pre>q->len)
return 0;
else if(q->len==q->listsize)
{
printf("full");
}
else
{
for(i=q->listsize;i>=pre;i--)
q->elem[i]=q->elem[i-1];
}
q->elem[pre-1]=x;
(q->len)+=1;
return 1;
}
int del(LIST *q,int pre)
{
int i;
if(pre<=0||pre>q->len-1||q->len<=0)
return 0;
else
{
for(i=pre;i<q->len;i++)
{
q->elem[i]=q->elem[i+1];
}
q->len--;
return 1;
}
}
int find(LIST *q,char bname[100])
{
int i;
for(i=0;(!strcmp(q->elem->bname,bname))||i<=q->len-1;i++,q->elem++)
{
if(i>q->len-1)
return 0;
else
{
puts(bname);
puts(q->elem->bno);
return 1;
}
}
}
int FIND(LIST *q,int i)
{
i-=1;
if(i>=0&&i<q->len)
{
puts(q->elem[i].bname);
puts(q->elem[i].bno);
return 1;
}
else
return 0;
}
void output(LIST *q)
{
int i;
for(i=0;i<=q->len-1;i++)
{
puts(q->elem[i].bname);
puts(q->elem[i].bno);
printf("\n");
}
}
void input(LIST *q,int k)
{
int i;
if(k==0)
{
printf("empty\n");
}
else
{
printf("sum=%d",k);
for(i=0;i<k;i++)
scanf("%s%s%f",q->elem[i].bno,q->elem[i].bname);
q->len=k;
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^