C語言資料結構與演算法之單鏈表

2022-09-20 18:39:10 字數 1543 閱讀 1930

目錄

鍊錶的每乙個結點中只包含乙個指標域

優點 : 儲存空間利用高效

舉例來說:

typedef struct studentstudent;

與之相反的是多鍊錶

typedef struct studentstudent;

1.定義資料元素

//定義資料元素

typedef struct studentelementtype;

2.定義順序表結構

typedef struct seqlist;

3.定義鍊錶的結點(包括資料域和指標域)

typedef struct node node;

4.設定頭結點

我們在定義鍊錶時,習慣性的會定義頭結點,以便統一鍊錶結點的插入和刪除操作

typedef struct linklist linklist;

如果鍊錶有頭結點,next就指向頭結點,沒有就指向第乙個結點

鍊錶的長度初始值為0

在第i個結點後插入資料元素

1.建立空節點並為資料域賦值

//建立空節點並為資料賦值

node* node = (node*)malloc(sizeof(node));

node -> date = element;

node -> next = null;

2.通過迴圈找到要插入的結點

for (int i = 1; currnode && i < pos - 1; i++)

3.將結點插入並對接前面的結點

if (currnode)

void initlinklist(linklist* linklist, elementtype* datearrar, int length)

}void printlinklist(linklist* linklist)

for (int i = 0; i < linklist->length; i++)

}int islinklistempty(linklist* linklist)

if (pos == 1)

return element;

}node* prenode; //字首結點

node = linklist->next;

for (int i = 1; node && i < pos; i++)

if (node)

return element;

elementtype deletelinklistelement(linklist* linklist, int pos) }

node* prenode; //字首結點

node = linklist->next;

for (int i = 1; node && i < pos; i++)

if (node)

return element;

}void cleatlinklist(linklist* linklist)

linklist->next = null;

linklist->length = 0;

}

資料結構與演算法之單鏈表

include include define maxsize 100 typedef int elemtype typedef struct lnode linknode void createlistf linknode l,elemtype a,int n 頭插法建立單鏈表 void initl...

資料結構與演算法之單鏈表

鍊錶的實現 實現單鏈表的 構建 資料新增 資料刪除 返回元素所在位置 資料查詢 返回元素所在的位置 的演算法設計 鍊錶的實現 實現單鏈表的 構建 資料新增 資料刪除 返回元素所在位置 資料查詢 返回元素所在的位置 的演算法設計 include include using namespace std ...

c語言資料結構之單鏈表

本教程會在以後持續公布c語言資料結構的實現文章,一來重溫一下基礎知識,二來為正在學習此部分內容的同學提供參考和思路,教程內容均來自於書籍 分享和本人思考,側重 編寫和實現,詳細的理論論述還是要翻閱經典的書籍,在此感謝貢獻自己智慧型的廣大程式設計人員。今天的主題是單鏈表,這是一種非常常見的資料結構,隸...