SeqList——顺序表
来源:互联网 发布:c语言单引号的作用 编辑:程序博客网 时间:2024/05/08 18:36
/*** File name: SeqList.h** Author: ZhouFeng** Date: 2012/03/25*/#ifndef SEQ_LIST_H#define SEQ_LIST_H#define MAX_SIZE 100#define ERROR 0#define SUCCESS 1typedef int EleType;typedef struct SeqList{ EleType _seqList[MAX_SIZE]; int length;}SeqList; void InitSeqList(SeqList *L);int InsertEle(SeqList *L, int index, EleType data);int DeleteEle(SeqList *L, int index, EleType *data);int GetEle(SeqList *L, int index, EleType *data);int GetSeqListLength(SeqList *L);#endif
/*** File name: SeqList.c** Author: ZhouFeng** Date: 2012/03/25*/#include #include "SeqList.h"void InitSeqList(SeqList *L){ if(L == NULL) {return; } L->length = 0;}int InsertEle(SeqList *L, int index, EleType data){ int i = 0; if(L == NULL && (index < 0 && index > L->length - 1)|| L->length >= MAX_SIZE) {return ERROR; } /* insert a new element front of 'index'*/ for(i = L->length - 1; i > index - 1; --i) {(L->_seqList)[i + 1] = (L->_seqList)[i]; } (L->_seqList)[index] = data; ++L->length; return SUCCESS;}int DeleteEle(SeqList *L, int index, EleType *data){ int i = 0; if(L == NULL && index < 0 && index > L->length - 1&& data == NULL && L->length <= 0) {return ERROR; } *data = (L->_seqList)[index]; for(i = index; i < L->length; ++i) {(L->_seqList)[i] = (L->_seqList)[i + 1]; } --L->length; return SUCCESS;}int GetEle(SeqList *L, int index, EleType *data){ if(L == NULL && index < 0 && index > L->length - 1) {return ERROR; } *data = (L->_seqList)[index]; return SUCCESS;}int GetSeqListLength(SeqList *L){ return L->length;}
#include #include #include "SeqList.h"/* Print */void PrintSeqList(SeqList *L){ int i = 0; for(i = 0; i < L->length; ) {printf("%4d", (L->_seqList)[i]);++i;if(i % 5 == 0){ printf("\n");} }}int main(int argc, char* argv[]){ int i = 0; SeqList L; srand((unsigned long)time()); InitSeqList(&L); for(i = 0; i < MAX_SIZE; ++i) {InsertEle(&L, 0, rand() % 30); } PrintSeqList(&L); return 0;}