1.線性表
線性表(linear list)是n個具有相同特性的資料元素的有限序列。線性表是一種在實際中廣泛使用的資料結構,常見的線性表:順序表、鍊錶、棧、佇列、字串。
線性表在邏輯上是線性結構,也就說是連續的一條直線。但在物理結構上並不一定是連續的,線性表在物理上儲存時,通常以陣列和鏈式結構的形式儲存。
2.順序表
順序表是用一段實體地址連續的儲存單元一次儲存資料元素的線性結構,一般情況下採用陣列儲存。在陣列上完成資料的增刪改查。
順序表一般可以分為:使用定長陣列儲存(靜態順序表);使用動態開闢的陣列儲存(動態順序表)。
下面看程式吧!
#include "seqlist.h"
#include #include #include void seqlistinit(pseq ps, int capacity)
ps->_capacity = capacity;
ps->_size = 0;
}void seqlistpushback(pseq ps, datatype data)
void seqlistpopback(pseq ps)
void seqlistpushfront(pseq ps, datatype data)
//插入元素
ps->_array[0] = data;
ps->_size++;
#endif
seqlistinsert(ps, 0, 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)
return -1;
}int seqlistsize(pseq ps)
int seqlistcapacity(pseq ps)
int seqlistempty(pseq ps)
void seqlistclear(pseq ps)
//移除第乙個值為data的元素
void seqlistremove(pseq ps, datatype data)
//移除所有值為data的元素
void seqlistremoveall(pseq ps, datatype data) }
void seqlistdestroy(pseq ps)
}void chackcapacity(pseq ps)
for (int i = 0; i < ps->_size; ++i)
ptemp[i] = ps->_array[i];
free(ps->_array);
//更新引數
ps->_array = ptemp;
ps->_array = newcapacity; }}
void seqlistprint(pseq ps)
void testseqlist()
int main()
看到上面程式是不是很頭疼,哈哈哈~當然還有啦,標頭檔案可是不能缺少噠
#pragma once
//順序表結構:
//陣列
//靜態順序表:元素個數受限
#if 0
typedef int datatype;
#define max_size 100
struct seqlist;
#endif
//動態順序表:元素個數不受限【主要的*****】
typedef int datatype;
typedef struct seqlistseqlist, *pseq;//加了typedef後seqlist就是乙個型別別名
//不加typedef後seqlist變成乙個結構體型別變數
//typedef struct seqlist seqlist;//取別名
//typedef struct seqlist* pseqlist;//同上
void seqlistinit(pseq ps, int capacity);//初始化 capacity容量大小
void seqlistpushback(pseq ps, datatype data);//尾插(放元素)
void seqlistpopback(pseq ps);//尾刪
//尾插和尾刪時間複雜度都是o(1),在size的位置,size++就可以了,不需要搬移元素
//頭插和頭刪時間複雜度都是o(n),在起始位置插乙個元素,整體向後移乙個位置
//以上效能太差,可以用insert、erase可以任意插入
void seqlistpushfront(pseq ps, datatype data);//頭插(分三步)
void seqlistpopfront(pseq ps);
void seqlistinsert(pseq ps, int pos, datatype data);
void seqlisterase(pseq ps, int pos);
//以上兩個時間複雜度最差情況為0(n)
int seqlistfind(pseq ps, datatype data);//整體遍歷一次
int seqlistsize(pseq ps);
int seqlistcapacity(pseq ps);
void seqlistclear(pseq ps);
void seqlistremove(pseq ps,datatype data);//順序表中一處第乙個值為data的元素
void seqlistremoveall(pseq ps, datatype data);
void chackcapacity(pseq ps);
int seqlistempty(pseq ps);
void seqlistdestroy(pseq ps);//順序表銷毀
void testseqlist();
~bye~ 資料結構 線性結構 順序表
什麼是線性結構?線性結構是n個具有相同特性的資料元素的有限序列,也稱為線性表。線性結構中都包含什麼內容?線性結構是一種在實際中廣泛使用的資料結構,常見的線性結構 順序表 鍊錶 棧 佇列 字串 什麼是順序表?順序表的分類?順序表是用一段實體地址連續的儲存單元依次儲存資料元素的線性結構,一般情況下採用陣...
資料結構之線性順序表實現
線性表是最常用且最簡單的一種資料結構。簡言之,乙個線性表是n個資料元素的有限序列。線性結構的特點是 在資料元素的非空有限集中,1 存在唯一的乙個被稱作 第乙個 的資料元素 2 存在唯一的乙個被稱作 最後乙個 的資料元素。3 除第乙個之外,集合中的每個資料元素均只有乙個前驅 4 除最後乙個外,集合中每...
資料結構線性表之順序表
純手打順序表相關操作,包括順序表的建立 初始化 輸出 插入 刪除 銷毀等,僅供自己回顧使用,可能會有不對的或者不恰當的地方望大家指正,共同學習。如下 資料結構順序表 include include include define maxsize 100 using namespace std type...