資料結構 2 動態順序表知識點整理

2021-09-19 10:29:23 字數 2837 閱讀 2399

線性結構:乙個有序資料元素的集合,資料元素之間是一對一關係的資料結構

常見的線性表:順序表、鍊錶、棧、佇列、字串...

順序表是用一段實體地址連續的儲存單元依次儲存資料元素的線性結構,一般情況下採用陣列儲存.在陣列上完成資料的增刪查改

順序表一般可以分為:

<1>靜態順序表:使用定長陣列儲存

<2>動態順序表:使用動態開闢的陣列儲存

seqlist.h

#pragma once

typedef int datatype;

typedef struct seqlist

seqlist, *pseq;

void seqlistinit(pseq ps, int capacity);

void seqlistdestroy(pseq ps);

void checkcapacity(pseq ps);

void seqlistpushback(pseq ps, datatype data);

void seqlistpopback(pseq ps);

void seqlistpushfront(pseq ps, datatype data);

void seqlistpopfront(pseq ps);

void seqlistinsert(pseq ps, int pos, datatype data);

void seqlisterase(pseq ps, int pos);

int seqlistfind(pseq ps, datatype data);

int seqlistempty(pseq ps);

int seqlistsize(pseq ps);

int seqlistcapacity(pseq ps);

void seqlistclear(pseq ps);

void seqlistremove(pseq ps, datatype data);

test.c

#include"seqlist.h"

#include #include #include // 動態的順序表

// 順序表的初始化

void seqlistinit(pseq ps, int capacity)

ps->_capacity = capacity;

ps->_size = 0;

}// 銷毀順序表

void seqlistdestroy(pseq ps)

}// 順序表的擴容

void checkcapacity(pseq ps)

for (int i = 0; i < ps->_size; ++i)

free(ps->_array);

ps->_array = pemp;

ps->_capacity = newcapacity;

}}// 在順序表的尾部插入值為data的元素

void seqlistpushback(pseq ps, datatype data)

// 刪除順序表最後乙個元素

void seqlistpopback(pseq ps)

--ps->_size;

}// 在順序表的頭部插入值為data的元素

void seqlistpushfront(pseq ps, datatype data)

ps->_array[0] = data;

++ps->_size;

}// 刪除順序表頭部的元素

void seqlistpopfront(pseq ps)

for (int i = 0; i < ps->_size - 1; ++i)

--ps->_size;

}// 在順序表pos位置插入值為data的元素

void seqlistinsert(pseq ps, int pos, datatype data)

ps->_array[pos - 1] = data;

++ps->_size;

}// 刪除順序表中pos位置上的元素

void seqlisterase(pseq ps, int pos)

--ps->_size;

}// 在順序表中查詢值為data的元素,找到返回該元素在順序表中的下標,否則返回-1

int seqlistfind(pseq ps, datatype data)

} return -1;

}// 檢測順序表是否為空,如果為空返回非0值,非空返回0

int seqlistempty(pseq ps)

return 0;

}// 返回順序表中有效元素的個數

int seqlistsize(pseq ps)

// 返回順序表的容量大小

int seqlistcapacity(pseq ps)

// 將順序表中的元素清空

void seqlistclear(pseq ps)

// 刪除順序表中值為data的元素

void seqlistremove(pseq ps, datatype data)

}} --ps->_size;

}//列印順序表

void seqlistprint(pseq ps)

printf("\n");

}void testseqlist()

int main()

資料結構概述 知識點整理

高階程式語言中的乙個基本概念,包含整形 浮點形 字元型等等 指由使用者定義 表示應用問題的數學模型以及定義在這個模型上的一組炒作的總稱 三大部分組成 特點 資料抽象 資訊隱蔽 預定義常量及型別 函式結果狀態碼 define ok 1 define error 0 define overflow 2 ...

資料結構 基礎知識點整理(4)

1.順序表提供隨機讀取功能,不需要經過指標的頻繁跳轉,儲存效率很高。2.線性表的順序儲存結構是一種隨機訪問的儲存結構,鏈式儲存結構是一種順序訪問的儲存結構,順序儲存指記憶體位址是一塊的,隨機訪問是指訪問時可以按下標隨機訪問。3.在棧中,棧頂指標的動態變化決定棧中元素的個數 在鏈式儲存結構中,無論是迴...

資料結構 知識點3 順序表

二 順序表的結構 3 順序表的操作 三 python中的順序表 儲存一組相同型別的資料,為了方便快速取得,將他們按照順序存放在一起。陣列是實際程式設計中順序表的具體體現 比如 儲存了1,2,3,元素的乙個順序表 在記憶體中儲存時,1的索引為0,假如實體地址為0x23 因為1為整數,則儲存單元為4個位...