一元多項式的表示:由於每個非零項由設計兩個資訊:係數和指數
1.用結構體陣列表示
2.鍊錶儲存(每個節點中存放係數和指數)
定義:由同型別資料元素構成有序序列的線性結構
1.表中元素個數為線性表的長度
2.線性表沒有元素時為空表
3.表起始位置為表頭,表結束位置為表尾
線性表的順序儲存又稱為順序表。它是用一組位址連續的儲存單元,依次儲存線性表中的資料元素,從而使得邏輯上相鄰的兩個元素在物理位置上也相鄰。因此,順序表的特點是表中元素的邏輯順序與其物理順序相同。
注意:線性表中的元素的位序是從1開始的,而陣列中元素的下標是從0開始的。
假設線性表的元素型別為elemtype,線性表的順序儲存型別描述為:
#include
#include
#define maxsize 100
typedef
int elemtype;
typedef
struct sqlist sqlist;
主要操作:
1.初始化(建立空的順序表)
2.查詢(o(n))
3.插入(o(n))
4.刪除(o(n))
不要求邏輯上相鄰的兩個元素物理上也相鄰,插入刪除不需要移動資料元素,只需要修改鏈。
單鏈表結點型別:
struct node
;
1.採用尾插法建立鍊錶(輸入陣列作為鍊錶結點值):
#include
#include
struct node
;node*
create
(int array)
last-
>next =
null
;return head;
}int
main()
; node *p =
create
(a);
p = p-
>next;
//從頭結點後第乙個結點開始
while
(p !=
null
)return0;
}
頭插法:該方法從乙個空表開始,生成新結點,並將讀取到的資料存放到新節點的資料域中,然後將新結點插入到當前鍊錶的表頭,即頭結點之後。
node*
create
(int array)
return head;
}
2.查詢(o(n))
3.插入
}4.刪除
1)按照位置刪除
//釋放結點的儲存空間f
delete
(q);
}2)刪除所有給定值的結點
void
delete
(node *head,
int x)
else
}}
3)刪除給定值的第乙個結點
void
delete
(node *head,
int x)
if(q-
>data!=x)
else
}
鍊錶中除了單鏈表還有迴圈鍊錶,雙鏈表(每個節點有兩個指標指向前和後)
和靜態鍊錶
靜態鍊錶是借助結構體陣列來描述線性表的鏈式儲存結構,結點也有資料域data和指標域next,與前面所講的鍊錶中的指標不同的是,這裡的指標是結點的相對位址(陣列下標),又稱為游標。和順序表一樣,靜態鍊錶也要預先分配一塊連續的記憶體空間。
靜態鍊錶節點定義:
struct node
;
1.儲存分配方式:
順序儲存結構用一段連續的儲存單元依次儲存線性表的資料元素。
單鏈表採用鏈式儲存結構,用一組任意的儲存單元存放線性表的元素。
2.時間效能:
查詢:順序儲存結構o(1)
單鏈表o(n)
插入和刪除:
順序儲存結構需要平均移動表長一半的元素,時間為o(n)
單鏈表在計算出某位置的指標後,插入和刪除時間僅為o(1)
3.空間效能:
順序儲存結構需要預分配儲存空間,分大了,容易造成空間浪費,分小了,容易發生溢位。
單鏈表不需要分配儲存空間,只要有就可以分配,元素個數也不受限制。
結論:若線性表需要頻繁查詢,很少進行插入和刪除操作時,宜採用順序儲存結構。
若需要頻繁插入和刪除時,宜採用單鏈表結構。
比如說遊戲開發中,對於使用者註冊的個人資訊,除了註冊時插入資料外,絕大多數情況都是讀取,所以應該考慮用順序儲存結構。
而遊戲中的玩家的**或者裝備列表,隨著玩家的遊戲過程中,可能會隨時增加或刪除,此時再用順序儲存就不太合適了,單鏈表結構就可以大展拳腳了。
當線性表中的元素個數變化較大或者根本不知道有多大時,最好用單鏈表結構,這樣可以不需要考慮儲存空間的大小問題。
而如果事先知道線性表的大致長度,比如一年12個月,一周就是星期一至星期日共七天,這種用順序儲存結構效率會高很多。
總之,線性表的順序儲存結構和單鏈表結構各有其優缺點,不能簡單的說哪個好,哪個不好,需要根據實際情況,來綜合平衡採用哪種資料結構更能滿足和達到需求和效能。
線性表基礎(二)
單鏈表 通過指標把它的一串儲存結點鏈結成乙個鏈 儲存結點由兩部分組成 data欄位 link欄位 template struct node 單鏈表的實現 template class linklist linklist t a int n linklist int length t get int ...
線性表基礎(三)
迴圈鍊錶 特點 首尾相接的鍊錶。可以從任一節點出發,訪問鍊錶中的所有節點。判斷迴圈鍊錶中尾結點的特點 q next first template struct node template class cyclelinklist 空表的構造 template cyclelinklist cycleli...
02 線性表基礎考點
線性表 一 線性表的順序儲存 1 線性表採用順序儲存,必須占用一片連續的儲存單元 2 線性表順序儲存結構是一種隨機訪問的儲存結構 3 順序表在查詢指定序號的元素 讀取元素和在末尾插入元素最節省時間 4 順序表中,在任何乙個位置插入元素的概率相同,則插入乙個元素所需移動的元素平均數 n 1 2 5 順...