【数据结构C实现】1.顺序表实现

#include <stdio.h>
#include<malloc.h>
#define INIT_SIZE 100
#define LIST_INCRE 10
struct SqList{
	int* pElem;
	int length;
	int listsize;	
};
typedef struct SqList SqList;
SqList L;
int init_SqList(SqList &L){
	L.pElem=(int*)malloc(INIT_SIZE*sizeof(int));
	L.length=0;
	L.listsize=INIT_SIZE;
	return 0;
}
int destroy_SqList(SqList &L){
	free(L.pElem);
	L.length=0;
	L.listsize=0;
}
int clear_SqList(SqList &L){
	L.length=0;
	free(L.pElem);
}
int insert_SqList(SqList &L,int i,int data){
	if(i<0 || i>L.length) exit(-1);
	if(L.length>=L.listsize){
		L.pElem=(int*)realloc(L.pElem,L.listsize+LIST_INCRE);
	}
	int* p=L.pElem+L.length-1;
	int* q=L.pElem+i;
	for(;p>=q;p--){
		*(p+1)=*(p);
	}
	*q=data;
	L.length++;
	return 0;
		
}
int delete_SqList(SqList &L,int i){
	if(i<0 || i>L.length-1) exit(-1);
	int* p=L.pElem+i;
	int* q=L.pElem+L.length-1;
	while(p<q){
		*p=*(p+1);
		p++;
	}
	L.length--;
}
int show_SqList(SqList &L){
	if(L.length==0) {
		printf("链表为空\n");
		return 0;
	}
	int* p=L.pElem;
	int* q=L.pElem+L.length-1;
	while(p<=q){
		printf("%d ",*p);
		p++;
	}
	printf("\n");
	return 0;
	
	
}
int isEmpty_SqList(SqList &L){
	if(L.length==0) return 1;
	else return 0;
}
int main(int argc, char *argv[])
{
	init_SqList(L);
	insert_SqList(L,0,34);
	insert_SqList(L,0,43);
	insert_SqList(L,0,1);
	
	show_SqList(L);
	
	delete_SqList(L,1);
	show_SqList(L);
	
	clear_SqList(L);
	show_SqList(L);
	return 0;
}

你可能感兴趣的:(数据结构)