#include<stdio.h>
#include<Stdlib.h>
#define MAXSIZE 10000 //图书表可能达到的最大长度
#define ERROR 0
#define OVERFLOW -2
#define OK 1
typedef struct{
char* no;//图书信息ISBN
char* name;//图书名字
float price;//图书价格
}Book;
typedef struct{
Book *elem;//存储空间的基地址
int length;//图书表中当前图书个数
}SqList;//图书表的顺序存储结构类型
typedef int Status;
Status ListInser_Sq(SqList *L,int i)
{
int j;
if(i<1||i>L->length+1) return ERROR;
if(L->length == MAXSIZE) return ERROR;
for(j=L->length-1;j>=i-1;j--)
{
L->elem[j+1].no = L->elem[j].no;
L->elem[j+1].name = L->elem[j].name;
L->elem[j+1].price = L->elem[j].price;
}
L->elem[j+1].no = "31123";
L->elem[j+1].name = "book1";
L->elem[j+1].price = 23.0;
return OK;
}
void Add_Sq(SqList *L)
{
L->elem[0].no = "1805050130";
L->elem[0].name = "Silver";
L->elem[0].price = 20;
L->elem[1].no = "1805050121";
L->elem[1].name = "Gold Day";
L->elem[1].price = 32;
L->elem[2].no = "1805050133";
L->elem[2].name = "Silver";
L->elem[2].price = 20;
L->elem[3].no = "1805050110";
L->elem[3].name = "Sad's Tears";
L->elem[3].price = 32;
L->length = 4;
}
void Init_Sq(SqList *L)
{
if(!L->elem) exit(OVERFLOW);
L->length = 0;
}
int main()
{
SqList L;
L.elem = (Book*)malloc(sizeof(Book)*MAXSIZE);
Init_Sq(&L);
Add_Sq(&L);
ListInser_Sq(&L,2);
for(int m = 0;m<L.length;m++)
{
printf(L.elem[m].name);
printf("\n");
}
getchar();
getchar();
getchar();
}
输出:
Silver
book1
Gold Day
Silver