鍊錶中的第乙個結點,包含指向第乙個資料元素的指標以及鍊錶自身的一些資訊,表頭節點不是資料元素。
鍊錶中代表資料元素的結點,包含指向下乙個資料元素的指標和資料元素的資訊。
鍊錶中的最後乙個資料結點,其下一元素指標為空,表示無後繼
//煉表頭檔案 linklist.h
#ifndef _linklist_h_
#define _linklist_h_
typedef void linklist;
typedef struct _tag_linklistnode linklistnode;
struct _tag_linklistnode
;linklist* linklist_create();
void linklist_destroy(linklist* list);
void linklist_clear(linklist* list);
int linklist_length(linklist* list);
int linklist_insert(linklist* list, linklistnode* node, int pos);
linklistnode* linklist_get(linklist* list, int pos);
linklistnode* linklist_delete(linklist* list, int pos);
#endif
//鍊錶的原始檔 linklist.h
#include #include #include "linklist.h"
typedef struct _tag_linklist
tlinklist;
struct value //此處結構體應當定義在main.c檔案中
;linklist* linklist_create() // o(1) 建立鍊錶
return ret;
}void linklist_destroy(linklist* list) // o(1) 銷毀鍊錶
void linklist_clear(linklist* list) // o(1) 清空資料元素
}int linklist_length(linklist* list) // o(1) 求鍊錶當前的資料長度
return ret;
}int linklist_insert(linklist* list, linklistnode* node, int pos) // o(n) 插入資料
node->next = current->next;
current->next = node;
slist->length++;
}
return ret;
}linklistnode* linklist_get(linklist* list, int pos) // o(n) 獲取某個資料元素
ret = current->next;
}
return ret;
}linklistnode* linklist_delete(linklist* list, int pos) // o(n) 刪除某個資料元素
ret = current->next;
current->next = ret->next;
slist->length--;
}
return ret;
}
資料結構之線性表 鏈式儲存
由線性表的順序儲存可以得知,順序儲存結構有其自身的優點 查詢特別快捷 當然同時存在其自身的缺點 對於插入和刪除時,需要移動大量的指標 所以衍生了鏈式結構來彌補其措施。鏈式儲存是採用動態儲存的方法,其儲存的單元不受限制,既可以是連續的儲存的位址,也可以是非連續的儲存位址,這樣對於經常需要刪除 插入的資...
資料結構 線性表鏈式儲存結構
鏈式儲存 用一組任意的儲存單元儲存線性表中的資料元素。用這種方法儲存的線性表簡稱線性鍊錶。儲存鍊錶中結點的一組任意的儲存單元可以是連續的,也可以是不連續的,甚至是零散分布在記憶體中的任意位置上的。鍊錶中結點的邏輯順序和物理順序不一定相同。即不要求邏輯上相鄰的元素在物理位置上也相鄰 為了正確表示結點間...
資料結構 線性表(鏈式儲存結構)
用一組任意的儲存單元儲存線性表的資料結構,這組儲存單元可以是連續的,也可以是不連續的。對資料結構ai來說,除了儲存其本身的資訊之外,還需儲存乙個指示其後繼的資訊 即直接後繼的儲存位置 資料域 儲存資料元素資訊的域。指標域 儲存直接後繼位置的域。資料域 指標域 結點 n個結點鏈結成乙個鍊錶,即為線性表...