資料結構學習之 不定長順序表

2021-09-22 05:56:55 字數 3305 閱讀 4131

//不定長的順序表

//.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...