資料結構 線性表鏈式儲存

2021-07-23 16:46:51 字數 2539 閱讀 3431

對於線性鍊錶,有兩種表示方法,一種是包含頭節點的情況,如下圖:

一種是不包含頭節點的情況,如下圖:

本文中對線性鍊錶的表示,利用的是帶頭節點的定義方式。使用c++實現了線性鍊錶建立,初始化,刪除,插入,清空,遍歷,有序鍊錶合併等操作。

煉表頭、頭指標、頭結點:

煉表頭:指的是線性表第乙個元素所在結點

頭指標:鍊錶中第乙個結點的儲存位置,如果鍊錶有頭節結點,則是指向頭節點,如果沒有頭結點,則是指向煉表頭

頭節點:資料內容無效,其指標是頭指標,放在第乙個元素的結點之前

**如下:

#include

"iostream"

using namespace std;

#define ok 1

#define error 0

#define maxsize 100

typedef int status;

typedef int elemtype;

typedef struct linknode

linknode ,*linklist;

status initlist(linklist &l)

//刪除鍊錶中指定位置的元素

status deletelist(linklist &l, int i, elemtype &e)

if (!(p->next) || i < j) return error;

q = p->next;

e = q->

data;

p->next = q->next;

free(q);

return ok;

}//向鍊錶中指定位置插入元素

status insertlist(linklist &l, int i, elemtype e)

//如果線性鍊錶為空

if (!p || j > i) return error;

linknode *q;

q = (linklist)malloc(sizeof(linknode));//生成新的結點

q->

data

= e;

//插入節點的指標變化

q->next = p->next;

p->next = q;

return ok;

}status clearlist(linklist &l)

return ok;

}status getelme(linklist l, int i, elemtype &e)

//如果線性鍊錶為空

if (i < j ||

!p) return error;

e = p->

data;

return ok;

}status visitlist(linklist l)

linknode *p = l->next;

while (p)

cout << endl;

return ok;

}//合併有序鍊錶

status mergelist(linklist &la, linklist &lb, linklist &lc)

else

}pc->next = pa ? pa : pb;

free(lb);

return ok;

}int main()

cout <<

"la:";

visitlist(la);

cout <<

"lb:";

visitlist(lb);

int i;

getelme(la, 2, i);

cout <<

"la第2個元素:";

cout << i << endl;

deletelist(la, 3, i);

cout <<

"刪除la第三個元素後:";

visitlist(la);

mergelist(la, lb, lc);

cout <<

"la,lb合併後:";

visitlist(lc);

cout <<

"清空lc:";

clearlist(lc);

visitlist(lc);

getchar(); getchar();

return

0;}

結果:

資料結構 線性表(鏈式儲存)

1 順序表 需要一片連續的記憶體空間,成員可以隨機訪問,訪問效率高 插入刪除資料存在資料搬移的現象,效率低 儲存密度高 鍊錶的特點 不需要連續的記憶體空間,不能隨機訪問元素,訪問效率低 插入刪除資料不存在資料搬移的現象,效率高 儲存密度比較低 2 無頭鍊錶 第乙個節點為資料節點,加入刪除第乙個節點,...

資料結構 線性表鏈式儲存結構

鏈式儲存 用一組任意的儲存單元儲存線性表中的資料元素。用這種方法儲存的線性表簡稱線性鍊錶。儲存鍊錶中結點的一組任意的儲存單元可以是連續的,也可以是不連續的,甚至是零散分布在記憶體中的任意位置上的。鍊錶中結點的邏輯順序和物理順序不一定相同。即不要求邏輯上相鄰的元素在物理位置上也相鄰 為了正確表示結點間...

資料結構 線性表(鏈式儲存結構)

用一組任意的儲存單元儲存線性表的資料結構,這組儲存單元可以是連續的,也可以是不連續的。對資料結構ai來說,除了儲存其本身的資訊之外,還需儲存乙個指示其後繼的資訊 即直接後繼的儲存位置 資料域 儲存資料元素資訊的域。指標域 儲存直接後繼位置的域。資料域 指標域 結點 n個結點鏈結成乙個鍊錶,即為線性表...