//不定長的順序表
//.h
#pragma once
#include #define init_size 10
typedef struct dseqlist
dseqlist;
typedef dseqlist *pdseqlist;
//初始化函式
void initdseqlist(pdseqlist plist);
//往plist的pos位置插入資料val
bool insert(pdseqlist plist, int pos, int val);
//列印
void show(pdseqlist plist);
//判空
bool isempty(pdseqlist plist);
//bool isfull
//查詢,找到了就返回下標,找不到返回-1
int search(pdseqlist, int key);
//刪除
bool deleteval(pdseqlist plist, int key);
//刪除位置值
//rtval:輸出引數,儲存刪除成功的資料
bool deletepos(pdseqlist plist, int pos, int *rtval);
//獲取pos下標儲存的資料
bool getval(pdseqlist plist, int pos, int *rtval);
//修改pos下標的資料
bool setval(pdseqlist plist, int pos, int newval);
//獲取val的前趨值
bool getprival(pdseqlist plist, int key, int *rtval);
//獲取val的後繼值
bool getnextval(pdseqlist plist, int key, int *rtval);
//長度
int getlength(pdseqlist plist);
//清除所有的資料
void clear(pdseqlist plist);
//銷毀該樹
void destory(pdseqlist plist);
dseqlist.cpp
#include #include #include #include "dseqlist.h"
//初始化函式
void initdseqlist(pdseqlist plist)
plist->elem = (int *)malloc(init_size*sizeof(int));
plist->length = 0;
plist->listsize = init_size;
}static bool isfull(pdseqlist plist)
//總容量擴大到原來的2倍
static void inc(pdseqlist plist)
//往plist的pos位置插入資料val
bool insert(pdseqlist plist, int pos, int val)
if(isfull(plist))
//移動資料
for(int i = 0; i < plist->length; i++)
plist->elem[pos] = val;
//有效資料個數增加
plist->length++;
}//列印
void show(pdseqlist plist)
printf("\n");
}//判空
bool isempty(pdseqlist plist)
//bool isfull
//查詢,找到了就返回下標,找不到返回-1
int search(pdseqlist plist, int key)
}return -1;
}//刪除
bool deleteval(pdseqlist plist, int key)
return deletepos(plist,i,null);
}//刪除位置值
//rtval:輸出引數,儲存刪除成功的資料
bool deletepos(pdseqlist plist, int pos, int *rtval)
if(rtval != null)
//移動資料
for( int i = 0; i < plist->length-1; i++)
//有效資料個數減少
plist->length--;
return true;
}//獲取pos下標儲存的資料
bool getval(pdseqlist plist, int pos, int *rtval)
if(rtval != null)
return true;
}//修改pos下標的資料
bool setval(pdseqlist plist, int pos, int newval)
plist->elem[pos] = newval;
return true;
}//獲取val的前趨值
bool getprival(pdseqlist plist, int key, int *rtval)
if(rtval != null)
return true;
}//獲取val的後繼值
bool getnextval(pdseqlist plist, int key, int *rtval)
if(rtval != null)
return true;
}//長度
int getlength(pdseqlist plist)
//清除所有的資料
void clear(pdseqlist plist)
//銷毀該樹
void destory(pdseqlist plist)
main.c
#include #include "dseqlist.h"
#include int mian()
show(&seq);
deleteval(&seq,5);
show(&seq);
insert(&seq,3,30);
show(&seq);
clear(&seq);
show(&seq);
return 0;
}
資料結構學習之 定長順序表
定長順序表 seqlist.件 h 定長順序表 pragma once include define size 10 typedef struct seqlist seqlist typedef seqlist pseqlist 初始化函式 void initseqlist pseqlist pli...
資料結構 不定長順序表
順序表是在計算機記憶體中以陣列的形式儲存的線性表,所以順序表的儲存結構和陣列非常類似,而它最顯要的特點就是邏輯位址和實體地址都相連。alterlist.h pragma once pragma once是乙個比較常用的c c 預處理指令,只要在標頭檔案的最開始加入這條預處理指令,就能夠保證標頭檔案只...
資料結構 順序表(二) 不定長順序表
一 匯入 二 儲存結構 與定長的順序表的儲存結構相比較,不定長的順序表只增加乙個元素listsize 用於記錄當前順序表的總長度 具體結構如下圖所示 結構定義 typedef struct dseqlist int elem 指向存放資料的動態陣列 int length 有效資料個數 int lis...