資料結構之單鏈表

2021-07-30 06:31:04 字數 1462 閱讀 8594

眾所周知,線性表是資料結構中的一種基本的資料結構。線性表的實現基本的有兩種:一種是順序儲存方式,另一種是鏈式儲存方式

順序儲存的線性表又叫順序表,實現時一般利用陣列等在記憶體中連續儲存的這個資料型別,所以順序表是一種隨機訪問的資料結構。順序表的優點是:可以快速訪問任一

位置的元素;並且無需為表示元素間的邏輯關係增加額外的儲存空間。順序表的缺點是:插入和刪除操作需要移動大量的元素;當線性表的長度變化較大時,無法確定儲存空間

容量;易造成儲存空間「碎片」。

為了克服克服順序表的上述缺點,先輩們又創造了線性表的另外一種實現方式:鏈式儲存。鏈式儲存,需要額外的儲存空間來儲存節點之間的邏輯關係,並且無法實現隨機

訪問,但是在插入刪除時無需再移動元素,只需要申請乙個節點的空間,並把這個節點鏈結到原有的鍊錶中。常見的鍊錶有:單鏈表、迴圈鍊錶(尾指標指向頭節點)、雙向鏈

表(每個節點儲存前向指標和後向指標)、靜態鍊錶(利用陣列描述,其中陣列首元素儲存備用鍊錶的首節點,陣列尾元素儲存占用鍊錶的首節點)。

簡單單鏈表的c++實現如下:

#includeusing namespace std;

typedef int elemtype;

struct node;

class listlink

;inline listlink::listlink()

inline listlink::~listlink()

}bool listlink::elemget(int i,elemtype *e)

if(!(p->next) || j>i)

return false;

*e = p->next->data;

return true;

}bool listlink::listinsert(int i,elemtype e)

if(!p || j>i)

return false;

node *s = new node();

s->data = e;

s->next = p->next;

p->next = s;

return true;

}bool listlink::listdelete(int i,elemtype *e)

if(!(p->next) || j>i)

return false;

node *s = p->next;

p->next = s->next;

*e = s->data;

delete s;

return true;

}void listlink::listprint()

coutl->listprint();

char quit = 'n';

while(quit!='y')

return 0;

}

資料結構之單鏈表

date 08 07 06 descript 單鏈表的實現與應用 public class linlist public node gethead 定位函式 public void index int i throws exception if i 1 current head.next int j...

資料結構之單鏈表

鍊錶 儲存結構的一種,包含兩個部分,資料域和指標域,相對於順序儲存結構來說,插入和刪除的演算法時間複雜度只為o 1 定義 定義 typedef struct node linklist linklist,指標指向每乙個元素 typedef struct nodenode 以下為簡單的c語言實現 in...

資料結構之單鏈表

由於順序表再插入或者刪除時需要移動大量資料,並且如果表比較大,會比較難分配連續的儲存空間導致儲存資料失敗。因此可以採用鍊錶結構,鍊錶結構是一種動態儲存分配的結構形式,可以根據需要動態的申請所需的儲存單元。鍊錶又分為單鏈表,雙向鍊錶,以及單迴圈鍊錶,多重鏈的迴圈鍊錶。本文先介紹單鏈表。典型的單鏈表結構...