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

2021-08-19 11:31:34 字數 1901 閱讀 7407

鍊錶中的第乙個結點,包含指向第乙個資料元素的指標以及鍊錶自身的一些資訊,表頭節點不是資料元素。

鍊錶中代表資料元素的結點,包含指向下乙個資料元素的指標和資料元素的資訊。

鍊錶中的最後乙個資料結點,其下一元素指標為空,表示無後繼

//煉表頭檔案 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個結點鏈結成乙個鍊錶,即為線性表...