資料結構-程式碼(自用)
阿新 • • 發佈:2021-07-12
動態分配順序表:
#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) { returnL.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++; returntrue; } 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; }