動態順序表部分介面的簡單實現

2021-08-01 23:59:42 字數 2589 閱讀 6584

我們的動態順序表指的依舊是能動態開闢記憶體,需要用多少記憶體就開闢多少,從而合理的利用記憶體資源。

seqlist_d.h

#ifndef __seqlist_d_h__

#define __seqlist_d_h__

#include #include #include #include #define sz 2 //初始化記憶體的大小

#define inc 1 //動態開闢的大小

#define max 100 //順序表的長度

typedef int datatype;

typedef struct myseqlist

seqlist, *pseqlist;

void initseqlist(pseqlist ps); //初始化

void destoryseqlist(pseqlist ps); //銷毀

void checkseqlist(pseqlist ps); //檢查記憶體

void pushback(pseqlist ps, datatype d);//尾部插入元素

void printseqlist(const pseqlist ps);//列印

void popback(pseqlist ps);//尾刪

void pushfront(pseqlist ps, datatype d); //頭部插入元素

void popfrint(pseqlist ps); //頭部刪除元素

void insert(pseqlist ps, int pos, datatype d); //在pos前面插入目標元素

int find(pseqlist ps, datatype d); //查詢目標元素並返回下標

void remove(pseqlist ps, datatype d); //刪除目標元素

void removeall(pseqlist ps, datatype d); //刪除所有元素d

void reverseseqlist(pseqlist ps); //逆序

void sortseqlist(pseqlist ps); //氣泡排序

int binarysearch(pseqlist ps, datatype d); //二分查詢目標元素

#endif

seqlist_d.c

#include "seqlist_d.h"

void initseqlist(pseqlist ps)

}void destoryseqlist(pseqlist ps)

}void checkseqlist(pseqlist ps)

exit(exit_failure);

} }void pushback(pseqlist ps, datatype d)

exit(exit_failure);

}void printseqlist(const pseqlist ps) //列印

printf("\n");

}void popback(pseqlist ps)//尾刪

ps->sz--;

}void pushfront(pseqlist ps, datatype d) //頭部插入元素

ps->data[0] = d;

ps->sz ++;

}return;

}void popfront(pseqlist ps) //頭部刪除元素

}ps->sz--;

}void insert(pseqlist ps, int pos, datatype d) //在pos前面插入目標元素

for(i=ps->sz; i>pos; i--)

ps->data[pos] = d;

ps->sz++;

}int find(pseqlist ps, datatype d) //查詢目標元素並返回下標

}return -1;

}void remove(pseqlist ps, datatype d) //刪除目標元素

if(i != -1)

ps->sz--;

}}void removeall(pseqlist ps,datatype d) //刪除所有元素d

else

}ps->sz-=i;

}void reverseseqlist(pseqlist ps) //逆序

}void sortseqlist(pseqlist ps) //氣泡排序

}}

}int binarysearch(pseqlist ps, datatype d) //二分查詢目標元素

else if(ps->data[mid] < d)

else

}return -1;

}

test.c

#include "seqlist_d.h"

seqlist mylist;

void test1()

int main()

經驗證無誤,哈哈又是乙個練手的小專案。

雜湊閉雜湊部分介面的實現

unorder map和unorder set的提出是因為紅黑樹作為關聯式容器的底層結構時,查詢資料的時間複雜度為logn,對資料的查詢並不方便。所以unorder map和unorder set的底層實現採用雜湊。unorder map儲存的是的鍵值對。unorder set儲存的是的鍵值 uno...

順序表介面的實現

typedef int sldatatype typedef struct seqlistseqlist include list.h 初始化 void seqlistinit seqlist psl,size t capacity 銷毀 void seqlistdestory seqlist ps...

動態順序表的簡單實現

順序表是在計算機記憶體中以陣列的形式儲存的線性表,是指用一組位址連續的儲存單元依次儲存資料元素的線性結構。這樣的儲存方式使得線性表邏輯上相鄰的元素,其在物理儲存單元中也是相鄰的。只要知道了第乙個元素的儲存位址,就可以知道線性表中任何乙個元素的儲存位址 include using namespace ...