没什么说的,顺序表的基本操作,源码如下:
//顺序表的各种算法 #include <stdio.h> #include <malloc.h> #define MAXSIZE 50 //表大小 typedef int ElemType; //元素类型 typedef struct { ElemType data[MAXSIZE]; int length; }SqList; //初始化 void initList(SqList **L){ *L = (SqList *)malloc(sizeof(SqList)); if(*L == NULL){ fprintf(stderr, "初始化失败!\n"); return ; } (*L)->length = 0; } //销毁 void destroyList(SqList *L){ free(L); } //判断是否为空表 int emptyList(SqList *L){ return L->length == 0; } //求表长 int listLength(SqList *L){ return L->length; } //输出表 void dispList(SqList *L){ int i; if(emptyList(L)) return ; for(i = 0;i < L->length;i++) printf("%d ", L->data[i]); printf("\n"); } //获取某个元素 int getElem(SqList *L, int i, ElemType *e){ if(i < 1 || i > L->length) return 0; *e = L->data[i - 1]; return 1; } //求元素的位置 int locateElem(SqList *L, ElemType e){ int i; for(i = 0;i < L->length && L->data[i] != e;i++) ; if(i >= L->length) return 0; else return i + 1; } //插入元素 int listInsert(SqList *L, int i, ElemType e){ int j; if(i < 1 || i > L->length + 1) return 0; for(j = L->length;j >= i;j--) //向后挪一个位置 L->data[j] = L->data[j - 1]; L->data[i - 1] = e; //插入元素 L->length++; //表长加一 return 1; } //删除 int listDelete(SqList *L, int i, ElemType *e){ //删除后将元素返回给e int j; if(i < 1 || i > L->length) return 0; *e = L->data[i - 1]; for(j = i - 1;j < L->length;j++) L->data[j] = L->data[j + 1]; //删除元素 L->length--; //表长减一 return 1; }
基本操作,如果有人不想打,可以参考参考,呵呵o(* ̄︶ ̄*)o
、、