線性表的鏈式儲存

2021-07-26 21:46:21 字數 2444 閱讀 5183

引言

一、單鏈表

相較於順序儲存用連續的儲存單元儲存,單鏈表採用鏈式儲存結構,用一組位址任意的儲存單元儲存資料元素。

特點:(1)儲存單元可以是不連續的,即邏輯結構與物理結構可以不相同;

(2)元素用結點儲存,每個結點由元素值和下乙個元素的位址構成;

(3)單鏈表是由每個結點的指標域按照邏輯次序相互連線而成的。

圖示:

優缺點:

(1)優點:插入刪除的時間複雜度可達到o(1)

(2)缺點:增加了指標域,空間開銷大,不能隨機讀取。

二、**實現

list.h

#pragma once

#define elemtype int

/*線性表的鏈式儲存結構*/

typedef struct node

node,*list;

/*線性表的操作*/

node* buynode();//建立乙個節點

bool initsize(list &l);//初始化線性表

bool insert_head(list &l, elemtype val);//頭插法

bool insert_tail(list &l, elemtype val);//尾插法

bool deletelist(list &l, elemtype val);//刪除元素

node* searchelem(list &l, elemtype val);//查詢元素

int getlength(list &l);//獲取線性表的長度

bool displaylist(list &l);//輸出線性表的元素

void clearlist(list &l);//清除線性表

void destroy(list &l);//摧毀線性表

list.cpp

#include #include "sqlist.h"

using namespace std;

node* buynode()//建立乙個結點

bool initsize(list &l)//初始化線性表

bool insert_head(list &l, elemtype val)//頭插法

bool insert_tail(list &l, elemtype val)//尾插法

//迴圈找到最後乙個結點

q->next = p;//最後乙個結點指向當前結點

return true;

}bool deletelist(list &l, elemtype val)//刪除元素

pre = p;//始終為p的前乙個結點

p = p->next;

} return false;

}node* searchelem(list &l, elemtype val)//查詢元素

return null;

}int getlength(list &l)//獲取線性表的長度

return length;

}bool displaylist(list &l)//輸出線性表的元素

cout << endl;

return true;

}void clearlist(list &l)//清除線性表

void destroy(list &l)//摧毀線性表

}

main.cpp

#include #include "sqlist.h"

using namespace std;

int main()

/* for (int i = 0; i < 10; ++i)

*/displaylist(list);

deletelist(list, 5);

displaylist(list);

if (searchelem(list, 6))

cout << "elem 6 is found" << endl;

cout << "list length is " << getlength(list) << endl;

destroy(list);

return 0;

}

執行結果

線性表的鏈式儲存

此方法雖然簡單,但是真寫起來太複雜了。線性表的鏈式儲存 include include struct lnode 線性表的初始化 void init l lnode l 線性表的後插建立 void create l1 lnode l n next null 線性表的後插建立 void create ...

線性表的鏈式儲存

include include include typedef int elemtype typedef struct nodenode,nodeptr 鍊錶節點 typedef struct listlist,listptr 鍊錶,頭結點為0位置 listptr initlist 初始化鍊錶 vo...

線性表的鏈式儲存

順序結構需要一塊連續的儲存空間,那如果我們只有零散的空間呢?線性表的鏈式儲存是指通過一組任意的儲存單元來儲存線性表中的資料元素。為了建立起資料元素之間的線性關係,對每個鍊錶結點,除了存放元素自身的資訊之外,還需要存放乙個指向其後繼的指標。因為每個結點只有乙個指標指向下乙個結點,故又稱單鏈表 通常用 ...