C語言資料結構單鏈表(LinkLits)

2021-10-10 08:11:30 字數 2411 閱讀 5340

1.0 單鏈表實現(linklist.h):

#pragma once

// 鍊錶

#define ok 1

#define error 0

#define true 1

#define false 0

#define invalid_index -1

// 資料型別

typedef int elemtype;

// 定義乙個鍊錶節點

typedef struct node

linknode;

// 定義乙個煉表頭指標

typedef linknode* linklist;

// 建立乙個鍊錶

linklist createlinklist();

// 插入資料

int insertelem(linklist list, elemtype e);

// 尾插法

int insertelemtail(linklist list, elemtype e);

// 插入資料

int insertnode(linklist list, node * pnode);

// 獲取鍊錶的第 i 個元素

elemtype getelem(linklist list, int index);

// 修改指定位置的元素

void modify(linklist list, int index, elemtype e);

// 刪除乙個資料

void remove(linklist list, elemtype e);

// 刪除乙個資料

void removeelem(linklist list, int index, elemtype* e);

// 列印乙個鍊錶

void printlinklist(linklist list);

// 釋放鍊錶

void freelinklist(linklist list);

2.0 單鏈表實現檔案(linklist.cpp):

#include "linklist.h"

#include #include #include linklist createlinklist()

linklist->data = null;

linklist->nextnode = nullptr;

return linklist;

}int insertelem(linklist list, elemtype e)

int insertelemtail(linklist list, elemtype e)

pnode = pnode->nextnode;

} return ok;

}int insertnode(linklist list, node * pnode)

elemtype getelem(linklist list, int index)

pnode = pnode->nextnode;

} // 沒有找到

return null;

}void modify(linklist list, int index, elemtype e)

pnode = pnode->nextnode; }}

void remove(linklist list, elemtype e)

else

break;

} prenode = pnode;

pnode = pnode->nextnode;

} // 釋放資料

free(curnode);

}void removeelem(linklist list, int index, elemtype* e)

else

// 指向要刪除的資料

*e = curnode->data;

} prenode = pnode;

pnode = pnode->nextnode;

} // 釋放資料

free(curnode);

}void printlinklist(linklist list)

else

pnode = pnode->nextnode;

} printf("\n");

}void freelinklist(linklist list)

}

3.0 測試

#include "linklist.h"

#include #include #include int main(int argc, char **ar**)

c語言 資料結構 單鏈表

將線性表l a0,a1,an 1 中各元素分布在儲存器的不同儲存塊,稱為結點,通過位址或指標建立它們之間的聯絡,所得到的儲存結構為鍊錶結構,表中 ai的結點形式如圖表示 其中結點的data 域存放資料元素 ai,而 next 域是乙個指標,指向 ai的直接後繼 ai 1 所在的結點。單鏈表結構如下 ...

資料結構 單鏈表 C語言

單向鍊錶 鍊錶結點通常包含資料域與指標域,資料域用來儲存相關的使用者的資料,指標域用來指向下乙個結點。訪問單向鍊錶,需要從頭部 head 開始單向順序訪問,訪問終結於指標域 next 為null的結點 其儲存方式不同於以往的陣列,按照非連續位址方式儲存。優點 鍊錶長度可以實現動態增長,不必像陣列一樣...

C語言資料結構 單鏈表

單鏈表在資料結構裡十分常見,是一種常見的線性表,下面介紹其性質並用 實現相關功能 單鏈表以鏈結方式儲存資料 1 鍊錶的具體儲存表示為 用一組任意的儲存單元來存放線性表的結點 這組儲存單元既可以是連續的,也可以是不連續的 鍊錶中結點的邏輯次序和物理次序不一定相同。為了能正確表示結點間的邏輯關係,在儲存...