動態順序表

2021-08-18 16:54:00 字數 3077 閱讀 5382

氣泡排序的優化

建立乙個順序表,對錶中的資料元素增刪查改

//實現動態順序表的以下介面:

#pragma once

#include

#include

#include

#include

typedef

int datatype;

typedef

struct seqlistd

seqlistd,*pseqlistd;

//初始化

void seqlistdinit(pseqlistd ps, int capacity);

//順序表尾部新增元素

void seqlistdpushback(pseqlistd ps, datatype data);

//順序表尾部刪除元素

void seqlistdpopback(pseqlistd ps);

//順序表任意位置新增元素

void seqlistdinsert(pseqlistd ps, int pos, datatype data);

//刪除任意位置元素

void seqlistderase(pseqlistd ps, int pos);

// 獲取元素個數

int seqlistdsize(pseqlistd ps);

// 獲取順序表的容量

int seqlistdcapacity(pseqlistd ps);

//判斷順序表示是否為空

int seqlistdempty(pseqlistd ps);

// 將順序表中的元素清空 注意:不改變順序表空間的大小

void seqlistdclear(pseqlistd ps);

//銷毀順序表

void seqlistddestroy(pseqlistd ps);

// 對順序表進行增容

int checkcapacity(pseqlistd ps);

//順序表元素的列印

void seqlistdprint(pseqlistd ps);

#include "seqlist.h"

//初始化

void seqlistdinit(pseqlistd ps, datatype capacity)

ps->size = 0;

ps->capacity = capacity;

}//從順序表尾部新增

void seqlistdpushback(pseqlistd ps, datatype data)

if(ps->size == ps->capacity)

ps->_array[ps->size] = data;

++ps->size;

}//順序表尾部刪除乙個元素

void seqlistdpopback(pseqlistd ps)

if(0 == ps->size)

--ps->size;

}//任意位置插入元素

void seqlistdinsert(pseqlistd ps, int pos, datatype data)

if(pos<0 || pos>ps->size)

if(ps->size == ps->capacity)

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

ps->_array[pos] = data;

++ps->size;

}//刪除某個位置的元素

void seqlistderase(pseqlistd ps, int pos)

if(pos<0 || pos>ps->size-1)

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

--ps->size;

}獲取元素個數

int seqlistdsize(pseqlistd ps)

return ps->size;

}// 獲取順序表的容量

int seqlistdcapacity(pseqlistd ps)

return ps->capacity;

}//判斷順序表示是否為空

int seqlistdempty(pseqlistd ps)

if(ps->size == 0)

return

0; return1;}

// 將順序表中的元素清空 注意:不改變順序表空間的大小

void seqlistdclear(pseqlistd ps)

ps->size = 0;

}//銷毀順序表

void seqlistddestroy(pseqlistd ps)

if(null == ps->_array)

ps->size = 0;

free(ps->_array);

ps->capacity = 0;

ps->capacity = null;

}//對順序表進行增容

int checkcapacity(pseqlistd ps)

datatype *new_address = (datatype *)realloc(ps->_array,ps->capacity*2*sizeof(datatype));

if(new_address == null)

ps->capacity = ps->capacity*2;

ps->_array = new_address;

return

0; //返回未使用

}//順序表元素列印

void seqlistdprint(pseqlistd ps)

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

printf("\n");

}#include "seqlist.h"

void test();

void test1();

int main()

//測試尾部新增 尾部刪除 任意刪除 並列印

void test()

//順序表 任意位置元素刪除 列印有效元素個數 容量

void test1()

動態順序表

ifndef seqlist h define seqlist h define capacity 3 typedef struct seqlist typedef enum tag typedef struct findret void expendseqlist seqlist pseq 擴大容...

動態順序表

動態順序表 引用庫函式 include include 巨集定義 define list init size 4 define list add size 2 define overflow 2 typedef int elemtype elemtype元素型別 定義結構體 typedef stru...

動態順序表

順序表是在進算計記憶體總以陣列的形式儲存的線性表,是指用一組位址連續的儲存單元依次儲存資料元素的線性結構。線性表採用的順序儲存就稱之為順序表。順序表是將表中的節點依次存放在計算機記憶體中一組位址連續的儲存單元中。任務要求 實現乙個動態順序表 功能要求 表可以動態增長,尾插元素,尾刪元素,頭插元素,頭...