C語言實現乙個動態記憶體的順序表

2021-08-04 15:29:15 字數 2849 閱讀 5933

1.順序表的概念

順序表是在計算機記憶體中以

陣列 的形式儲存的線性表,是指用一組位址連續的

儲存單元

依次儲存

資料元素

的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的儲存單元中。

2.實現函式功能

3.**模組

1.seqlist.h

#pragma once

#include#include #include #include#define max 10

#define default_sz 2

#define inc 1

typedef int datatype;

typedef struct seqlist

seqlist, *pseqlist;

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

void pushback(pseqlist ps, datatype d);//頭部插入函式

void popback(pseqlist ps);//頭部刪除函式

void display(const pseqlist ps);//列印函式

void pushfront(pseqlist ps, datatype d);//尾部插入函式

void popfront(pseqlist ps);//尾部刪除函式

int find(pseqlist ps, datatype d);//查詢指定元素函式

void insert(pseqlist ps, datatype d, int pos);//指定位置插入函式

void remove(pseqlist ps, datatype d);//刪除指定元素函式

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

void reverse(pseqlist ps);//逆序順序表函式

void sort(pseqlist ps);//排序順序表函式

int binarysearch(pseqlist ps, datatype d);//二分查詢函式

void destory_mylist(pseqlist ps);//記憶體銷毀函式

void checkcapacity(pseqlist ps);//檢查增容函式

void deleccapacity(pseqlist ps);//減容函式

2.實現模組
#define _crt_secure_no_warnings

#include"seqlist.h"

void deleccapacity(pseqlist ps)

else

}}void checkcapacity(pseqlist ps)

else

}}void destory_mylist(pseqlist ps)

void initseqlist(pseqlist ps)

memset(ps->data, 0, sizeof(datatype)*(ps->capacity));

}void display(const pseqlist ps)

printf("\n");

}void pushback(pseqlist ps, datatype d)

void popback(pseqlist ps)

void pushfront(pseqlist ps, datatype d)

memmove(ps->data + 1, ps->data, sizeof(datatype)*(ps->sz));

/*for (i = ps->sz; i > 0; i--)

*/ ps->data[0] = d;

ps->sz++;

}void popfront(pseqlist ps)

*/ ps->sz--;

deleccapacity(ps);

}int find(pseqlist ps, datatype d)

}return -1;

}void insert(pseqlist ps, datatype d, int pos)

ps->data[pos] = d;

ps->sz++;

}void remove(pseqlist ps, datatype d)

} }ps->sz--;

deleccapacity(ps);

}void removeall(pseqlist ps, datatype d)

}void reverse(pseqlist ps)

}void sort(pseqlist ps)

} }}int binarysearch(pseqlist ps, datatype d)

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

else

}return -1;

}3.test.c

#define _crt_secure_no_warnings

#include"seqlist.h"

void test1()//尾部插入和刪除

void test2()//頭部插入和刪除

void test3()//查詢和指定位置插入

void test4()//刪除指定元素

void test5() //逆序,排序以及二分查詢

int main()

C語言實現動態順序表

include include include include ifndef list h define list h define default 3 初始化開闢容量大小 define int sz 2 每次固定增容大小 typedef int datatype typedef struct se...

動態順序表c語言實現

主要操作結構體中的指標,在init函式裡對指標進行記憶體開闢,checkcapacity函式在每次插入之前檢查一遍,如果可用空間沒有了,就開闢當前最大容量的兩倍。其他操作與靜態順序表無大區別。seqlist.h pragma once define datatype int typedef stru...

C語言實現動態順序表

關鍵知識點 動態順序表的儲存是以動態陣列的方式,它比之靜態順序表,在空間的開闢上,更加的靈活。避免了靜態順序表的定長陣列儲存方式而導致空間開闢小了不夠用,開闢大了造成記憶體浪費的特點。根據實際需要,自己掌控對記憶體空間大小的分配。因而動態順序表在實際應用中更加廣泛。對順序表的主要操作 初始化順序表 ...