動態實現順序表

2021-07-12 07:54:58 字數 2651 閱讀 4899



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

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

儲存單元

依次儲存

資料元素

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

儲存單元中。

下面來進行順序表的動態實現

標頭檔案

#ifndef __seqlist_d_h__

#define __seqlist_d_h__

#include#include#include#include#define max 1000

#define default_size 3

typedef int datatype;

typedef struct seqlist

seqlist,*pseqlist;

void printseqlist(pseqlist pseq);//列印函式

void destroyseqlist(pseqlist pseq);//銷毀函式

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

void pushback(pseqlist pseq,datatype x);//尾插

void popback(pseqlist pseq);//尾刪

void pushfront(pseqlist pseq,datatype x);//頭插

void popfront(pseqlist pseq);//頭刪

void insert(pseqlist pseq,int pos,datatype x);//指定為插入

void remove(pseqlist pseq,datatype x);//制定數刪除

void removeall(pseqlist pseq,datatype x);//刪除所有

void bubblesort(pseqlist pseq);//氣泡排序

void erase(pseqlist pseq,int pos);//指定為刪除

int binarysearch(pseqlist pseq,datatype x);//二分查詢法

#endif//__seqlist_d_h__

函式實現部分

#include"seqlist_d.h"

void printseqlist(pseqlist pseq)

printf("\n");

}void initseqlist(pseqlist pseq)

pseq->size =0;

pseq->capacity=default_size; }

void destroyseqlist(pseqlist pseq)

void capacity(pseqlist pseq)//擴容函式

else

}}void pushback(pseqlist pseq,datatype x)

pseq->data[pseq->size++] = x;

}void popback(pseqlist pseq)

pseq->size--;

}void pushfront(pseqlist pseq,datatype x)

pseq->data[0] = x;

pseq->size++;

}void popfront(pseqlist pseq)

for(i=0;isize-1;i++)

pseq->size--;

}void insert(pseqlist pseq,int pos,datatype x)

for(i=(pseq->size)-1;i>=pos-1;i--)

pseq->data[pos - 1] = x;

pseq->size++;

}void remove(pseqlist pseq,datatype x)

if(pseq->data[i]==x)

pseq->size--; }}

void removeall(pseqlist pseq,datatype x)

pseq->size--;

} else

i++;}}

void bubblesort(pseqlist pseq)

} }

}void erase(pseqlist pseq,int pos)

for(i = pos; i < pseq->size; i++)

pseq->size--;

printf("刪除成功\n");

}int binarysearch(pseqlist pseq,datatype x)

bubblesort(pseq);

while (left <= right)

else if (x < pseq->data[mid])

else

} return -1;

}

測試**

#include"seqlist_d.h"

int main()

測試部分讀者有興趣可以自行新增測試

實現動態順序表

標頭檔案seqlist.h中 pragma once include include typedef int datatype typedef struct seqlist seqlist 列印順序表 void printseqlist seqlist pseq printf n 增大容量 void...

實現動態順序表

靜態順序表和動態順序表之間的區別就是靜態順序表的儲存大小一旦設定好之後便不能修改 顯然動態順序表採用的是動態分配記憶體,容量是可以增加的,當然動態順序表要比靜態順序表多增加乙個監測容量的引數,每當當前容量存滿的時候就要觸發擴容機制,實現動態開闢記憶體。由於兩者差別不是很大,這裡我就只實現動態順序表,...

動態順序表實現

動態順序表相比於靜態順序表加入了擴容機制,在進行所有插入操作是都必須判斷是否需要擴容 結構體 typedef int datatype define init capacity 3 typedef struct seqlistd seqlistd 順序表的初始化和銷毀 初始化 void seqlis...