Status InitSqlList(SqList *list);
Status InsertSqlList(SqList *list,int i,ElemType e);
Status DeleteSqList(SqList *list ,int i);
Status UpdateSqList(SqList *list,int i,ElemType e);
void GetElemType(SqList *list,int i,ElemType *e);
int IsEmpty(SqList *list);
int GetLength(SqList *list);
void ClearSqList(SqList *list);
void showSqList(SqList *list);
#include#include #define MAXSIZE 3 #define SUCCESS 1 #define ERROR 0 #define true 1 #define false 0 typedef int Status; typedef char ElemType; typedef struct { ElemType *base; int length; }SqList; Status InitSqlList(SqList *list); Status InsertSqlList(SqList *list,int i,ElemType e); Status DeleteSqList(SqList *list ,int i); Status UpdateSqList(SqList *list,int i,ElemType e); void GetElemType(SqList *list,int i,ElemType *e); int IsEmpty(SqList *list); int GetLength(SqList *list); void ClearSqList(SqList *list); void showSqList(SqList *list); int main() { SqList list; InitSqlList(&list); InsertSqlList(&list,1,'a'); InsertSqlList(&list,2,'b'); InsertSqlList(&list,2,'c'); showSqList(&list); // DeleteSqList(&list,2); // showSqList(&list); ElemType e; GetElemType(&list,2,&e); printf("查询结果为:%cn",e); printf("length: %dn",GetLength(&list)); UpdateSqList(&list,1,'e'); showSqList(&list); return 0; } Status InitSqlList(SqList *list) { list->base = (ElemType *)malloc(sizeof(ElemType) * MAXSIZE); //申请内存空间 if(!list->base) { return ERROR; } list->length = 0; return SUCCESS; } Status InsertSqlList(SqList *list,int i,ElemType e) { if(i<1 || i>MAXSIZE || list->length == MAXSIZE){ printf("插入位置非法或表已满n"); return ERROR; } int j = list->length - (i-1); //需要循环的次数 int k = list->length; //K表示顺序表中最后一个元素下标 + 1的位置 while(j>0) { list->base[k] = list->base[k-1]; //从最后一个元素开始依次往后移动一个单位空间 k--; j--; } list->base[i-1] = e; list->length++; return SUCCESS; } Status DeleteSqList(SqList *list ,int i) { if(i<1 || i>MAXSIZE || list->length == 0) { printf("删除位置非法n"); return ERROR; } int j = list->length - (i-1); //需要循环的次数 while(j>0) { list->base[i-1] = list->base[i]; //依次往前移动一个单位空间 i++; j--; } list->length--; return SUCCESS; } Status UpdateSqList(SqList *list,int i,ElemType e) { if(i<1 || i>MAXSIZE || list->length == 0) { printf("元素不存在n"); } list->base[i-1] = e; } void GetElemType(SqList *list,int i,ElemType *e) { if(i<1 || i>MAXSIZE || list->length == 0) { printf("元素不存在n"); } *e = list->base[i-1]; } int IsEmpty(SqList *list) { if(list->length == 0) { return false; } return true; } int GetLength(SqList *list) { return list->length; } void ClearSqList(SqList *list) { list->length == 0; } void showSqList(SqList *list) { int j = list->length; printf("当前顺序表: "); for(int i=0;i base[i]); } putchar('n'); }
运行结果:



