动态分配顺序表:
#include <iostream> using namespace std; #define InitSize 10 #define ElemType int typedef struct { ElemType *data; int MaxSize; //表示当前最大长度 int length; //表示当前字符串长度 } SeqList; void InitList(SeqList &L) { L.data=(ElemType *)malloc(sizeof(ElemType)*InitSize); L.length=0; L.MaxSize=InitSize; } int Length(SeqList &L) { return L.length; } int LocateElem(SeqList L,ElemType e) { for(int i=0; i<L.length; i++) { if(e==L.data[i]) { return i; } } return -1; } ElemType getElem(SeqList L,int i) { return L.data[i-1]; } bool listInsert(SeqList &L,int i,ElemType e) { if(i<1||i>L.length+1||i>L.MaxSize) { return false; } //ElemType *p=L.data; for(int k=L.length; k>=i; k--) { L.data[k]=L.data[k-1]; } L.data[i-1]=e; L.length++; return true; } void IncreaseSize(SeqList &L,int len) { int *p=L.data; L.data=(ElemType *)malloc(sizeof(ElemType)*(L.MaxSize+len)); for(int i=0; i<L.MaxSize; i++) { L.data[i]=p[i]; } L.MaxSize=L.MaxSize+len; free(p); } bool Empty(SeqList L) { if(L.length==0) { return true; } else { return false; } } void PrintList(SeqList L) { for(int i=0; i<L.length; i++) cout<<L.data[i]<<endl; } void DestoryList(SeqList &L){ free(L.data); } int main() { SeqList L; InitList(L); IncreaseSize(L,5); listInsert(L,1,35); PrintList(L); return 0; }