数据结构-顺序表基本操作
这是顺序表基本操作:
#include<stdio.h> #define MaxSize 50 #define ture 1 #define false -1 //静态分配 typedef struct { int data[MaxSize]; int length; }SqList; /* //动态分配 typedef struct { int *data; int MaxSize; int length; }SeqList; */ //初始化顺序表 void InitList(SqList &L) { for (int i = 0; i < MaxSize; i++) L.data[i] = 0;//设初值 L.length = 0; } //求表长 int Length(SqList L) { return L.length; } //增加 bool ListInsert(SqList &L,int i,int e) { if (i<1 || i>L.length + 1)//判断i是否有效 return false; if (L.length >= MaxSize)//判断当前顺序表是否已满 return false; for (int j = L.length; j >= i; j--) {//第i个及以后的往后面移动一个 L.data[j] = L.data[j-1]; } L.data[i - 1] = e; L.length++; return ture; } //删除 bool ListDelete(SqList &L, int i, int &e) { if (i<1 || i>L.length)//判断i是否有效 return false; e = L.data[i - 1]; for (int j = i; j<L.length; j++) {//从前往后删 L.data[j-1] = L.data[j]; } L.length--; return ture; } //按位查找 int GetElem(SqList L,int i) { return L.data[i-1]; } //按值查找 int LocateElem(SqList L, int e) { for (int i = 0; i < L.length; i++) { if (L.data[i] == e) return i + 1; } return false; } //输出线性表 void PrintList(SqList L) { printf("\n"); for (int i = 0; i < L.length; i++) printf("L.data[%d]=%d \n",i,L.data[i]); printf("\n"); } int main() { SqList L; int e=-1; InitList(L);//初始化顺序表 ListInsert(L, 1, 2); ListInsert(L, 2, 5); ListInsert(L, 3, 4); ListInsert(L, 4, 6); PrintList(L);//输出线性表 ListDelete(L, 4, e); printf("e=%d\n", e); PrintList(L);//输出线性表 printf("\n\n线长为:%d\n",Length(L)); //查找第三位 //按位查找 int m=GetElem(L,3); printf("\n第三位为:%d\n",m); int n=LocateElem(L, 4); printf("\n值为4的是第%d位\n", n); }