#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define OK true
#define ERROR false
#define Status bool
#define OVERFLOW -2
typedef struct{
char name[20];
int count;
}Book;
typedef struct{
Book *elem;
int length;
}SqList;
Status initList(SqList &s){
s.elem = new Book[MAXSIZE];
if(!s.elem){
exit(OVERFLOW);
}
s.length = 0;
return OK;
}
void DestroyList(SqList &s){
if(s.elem){
delete s.elem;
}
}
void ClearList(SqList &s){
s.length = 0;
}
int GetLength(SqList &s){
return s.length;
}
int IsEmpty(SqList &s){
return s.length == 0?1:0;
}
int GetElem(SqList &s,int i,Book &b){
if(i < 1 || i > s.length || s.length == 0 || !s.elem){
return ERROR;
}
b = s.elem[i-1];
return OK;
}
int LocationElem(SqList &s,Book &b){
if(IsEmpty(s)){
return ERROR;
}
Book *book = s.elem;
for(int i=0;i<=0;i++){
if(b.name == book[i].name){
return i;
}
}
return ERROR;
}
void AddCapacity(SqList &s){
if(s.length > MAXSIZE){
Book *books = new Book[MAXSIZE * 2];
for(int i = 0;i< s.length;i++){
books[i] = s.elem[i];
}
s.elem = books;
}
}
int addElem(SqList &s,Book &b){
if(!s.elem){
return ERROR;
}
AddCapacity(s);
s.elem[s.length] = b;
s.length++;
return OK;
}
int insertElem(SqList &s,Book &b,int location){
if(location < 1 || location > s.length+1)return ERROR;
if(!s.elem){
return ERROR;
}
AddCapacity(s);
Book temp;
for(int i=location-1;i< s.length;i++){
temp = s.elem[i];
s.elem[i] = b;
b = temp;
}
s.elem[s.length] = b;
s.length++;
return OK;
}
int insertElem02(SqList &s,Book &b,int location){
if(location < 1 || location > s.length+1)return ERROR;
if(!s.elem){
return ERROR;
}
AddCapacity(s);
for(int i=s.length-1;i>=location-1;i--){
s.elem[i+1] = s.elem[i];
}
s.elem[location-1] = b;
s.length++;
return OK;
}
int DeleteElem(SqList &s,int location,Book &b){
if(!s.elem || s.length == 0 || location < 0 || location > s.length){
return ERROR;
}
b = s.elem[location-1];
for(int i=location-1;i<= s.length-1;i++){
s.elem[i] = s.elem[i+1];
}
s.length--;
return OK;
}
void print(SqList &s){
if(!s.elem || s.length == 0){
return;
}
for(int i=0;i< s.length;i++){
printf("%s ",s.elem[i].name);
}
}
int main(){
SqList l;
initList(l);
Book book = {"123",12};
addElem(l,book);
Book book1 = {"124",13};
addElem(l,book1);
Book book2 = {"125",13};
addElem(l,book2);
Book b3 = {"137",89};
insertElem02(l,b3,4);
print(l);
printf("\n");
Book del;
DeleteElem(l,4,del);
print(l);
}
|