mysql 线性表_线性表之顺序存储,基本操作
/*
九大基本操作(不同的存儲結構實現的代碼不同)
此處用一維數組的動態分配:
InitList(&L);//初始化表,
Length(L);
LocateElem(L,e);
GetElem(L,i);
ListInsert(&L,i,e);
ListDelete(&L,i,&e);
PrintList(L);
Empty(L);
DestoryList(&L);
*/
/*靜態分配的結構
#define MaxSize 50
typedef struct{
int data[MaxSize];
int length;
}SqList;
*/
#include
#include
#include
#define InitSize 100//動態分配的結構
#define AddSize 20//增加的空間個數
typedef struct{
int* data;
int MaxSize,length;//數組的最大容量,當前個數
}SeqList;
SeqList* InitList(SeqList &L){
L.data = (int*)malloc(sizeof(int)*InitSize);
if(L.data == NULL) return NULL;
L.MaxSize = InitSize;
L.length = 0;
return &L;
}
int Length(SeqList L){
return L.length;
}
int LocateElem(SeqList L,int e){//返回e在數組中的下標
int i = 0;
while(i<=L.length&&L.data[i] != e){
i++;
}
if(i>L.length){
exit(EXIT_FAILURE);
}
return i;
}
int GetElem(SeqList L,int i){//獲取第i個元素
if(i<1||i>L.length+1) exit(EXIT_FAILURE);
return L.data[i-1];
}
SeqList* ListInsert(SeqList &L,int i,int e){//在第i個位置插入
if(i<1||i>L.length+1) exit(EXIT_FAILURE);
if(L.length >= L.MaxSize) {
L.data = (int*)realloc(L.data,sizeof(int)*(InitSize+AddSize));
if(L.data == NULL) exit(OVERFLOW);
L.MaxSize = InitSize+AddSize;
}
for(int j = L.length-1;j>=i-1;j--)
L.data[j+1] = L.data[i];
L.data[i-1] = e;
++L.length;
return &L;
}
SeqList* ListDelete(SeqList &L,int i,int &e){//刪除第i個元素的位置
if(i<1||i>L.length) exit(EXIT_FAILURE);
e = L.data[i-1];
for(int j=i-1;j
L.data[j]=L.data[j+1];
--L.length;
return &L;
}
void PrintList(SeqList L){
int i = 0;
while(i
printf("%d ",L.data[i]);
}
printf("\n");
}
bool Empty(SeqList L){
if(L.length == 0) return true;
else return false;
}
bool DestoryList(SeqLisrt &L){
for(int i=0;i
free(L);
}
main(){
SeqList SL;
SeqList* L = InitList(SL);
printf("%d",L);
return 0;
}
總結
以上是生活随笔為你收集整理的mysql 线性表_线性表之顺序存储,基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 悬浮提示框_表格(悬浮框提示)
- 下一篇: html-css练习题(天天生鲜静态网页