鍊錶就是c中利用結構體,將資料和下乙個結構體的位址封裝在乙個結構體中形成乙個節點,這些節點組合起來就是乙個基礎的鍊錶,根據需要可以擴充套件其中的內容來實現不同的需求。
實現乙個鍊錶需要定義節點,建立,初始化,插入,刪除這些基本操作。
#include "stdafx.h"
#include "stdlib.h"
#include "malloc.h"
#define ok 0
#define erro 1
typedef
int datatype;
typedef
int status;
typedef
struct lnode lnode,*lpoint;
//表尾插入
status createlink(lpoint &l, int n, datatype *e)
r->next = null; //無節點插入記得置為null指標
return ok;
}status insertlink(lpoint &l, int i, datatype e)
//這些變化需先判斷再執行,方便下乙個越界判斷
if (!p->next || counter>i-1)
return erro; //超出範圍
//p->next ==null 說明往後越界,counter >i-1 說明往前越界
if (!(in = (lpoint)malloc(sizeof(lnode))))
return erro;//記憶體不足
in->data = e;
in->next = p->next;
p->next = in;
return ok;
}status dellink(lpoint l, int i, datatype e)
if (!p->next || counter > i - 1)
return erro;//越界
del = p->next;
p->next = del->next;
e = del->data;
free(del);
return ok;
}void printlink(lpoint l)
printf("null\n");
}int main()
; lpoint link = null;
createlink(link, 5, s);
printlink(link);
return
0;}
這是乙個帶頭結點的鍊錶,基本操作都差不多。注意若是c來實現的話,頭結點需要定義為二級指標,因為在函式裡面改變了指標的指向,c++可以傳引用,c就只能用二級指標來指了。 鍊錶基本操作
include include string h include typedef struct stust void xj st h 生成單鏈表 l l null void shc st h 輸出鍊錶 printf d n h d void chr st h 按大小插入元素 else h h l v...
鍊錶基本操作
動態記憶體的相關知識int p null 定義指標變數 p int malloc sizeof int 申請記憶體空間,並且進行強制型別轉換 p 3 使用指標變數 typedef struct list typedef struct listnode listpointer struct listn...
鍊錶基本操作
一 什麼是鍊錶 鍊錶,又稱為線性表的鏈式儲存結構,是一種離散儲存。因為線性表的順序儲存結構在增刪上需要移動大量元素,耗費大量時間。進而出現了通過隨機儲存,指標記錄位址的離散儲存。即,有空,資料就存在 只需記錄其位址即可。大致思路可參考出自 大話資料結構 的下圖。二 鍊錶基本內容 三 基本 1.結構體...