没有用户友好提示,也没有人性化设计,甚至没有注释.……
#include<iostream>
#include<cstdlib>
#define OVERFLOW -2
#define ERROR -1
#define OK 1
#define MAXSIZE 100
using namespace std;
typedef struct
{
char no[20];
char name[50];
float price;
}Book;
typedef struct
{
Book *elem;
int length;
}SqList;
SqList L;
int InitList(SqList &L)
{
L.elem=new Book[MAXSIZE];
if(!L.elem) exit(OVERFLOW);
L.length=0;
return OK;
}
int CreateList(SqList &L,int n)
{
for(int i=0;i<n;i++)
{
cin>>L.elem[i].no>>L.elem[i].name>>L.elem[i].price;
L.length++;
}
return 0;
}
int prin(SqList &L)
{
for(int i=0;i<L.length;i++)
cout<<L.elem[i].no<<' '<<L.elem[i].name<<' '<<L.elem[i].price<<' '<<endl;
return 0;
}
int LocateBook(SqList &L,char _name[])
{
int flag,i;
for(i=0;i<L.length;i++)
{
flag=1;
for(int j=0;j<50;j++)
{
if(L.elem[i].name[j]!=_name[j])
{
flag=0;
break;
}
}
if(flag) break;
}
if(flag)
{
cout<<L.elem[i].no<<' '<<L.elem[i].name<<' '<<L.elem[i].price<<' '<<endl;
cout<<i+1;
return i+1;
}
return 0;
}
int ListInsert(SqList &L,Book e)
{
if(L.length==MAXSIZE) return ERROR;
L.elem[L.length]=e;
++L.length;
return OK;
}
int ListDelete(SqList &L,int i)
{
if((i<1)||(i>L.length)) return 0;
for(int j=i;j<=L.length-1;j++)
L.elem[j-1]=L.elem[j];
--L.length;
return 1;
}
int main()
{
char a[50]="qwe";
Book e={"1004","qwert",58};
SqList Pa;
InitList(Pa);
CreateList(Pa,3);
LocateBook(Pa,a);
cout<<endl;
ListInsert(Pa,e);
prin(Pa);
cout<<endl;
ListDelete(Pa,2);
prin(Pa);
cout<<endl;
return 0;
}