c語言 單鏈表

2021-07-12 02:18:51 字數 2649 閱讀 8029

單鏈表,顧名思義是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。

鍊錶中的資料是以結點來表示的,每個結點的構成:元素(資料元素的映象) + 指標(指示後繼元素儲存位置),元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。

我們在這裡使用c語言實現:

.h 檔案:

#pragma once

#include#include typedef int datatype;

typedef struct slistnode

slistnode;

void pushback(slistnode* & phead, datatype x);

void popback(slistnode* & phead);

void pushfront(slistnode* & phead, datatype x);

void popfront(slistnode* & phead);

slistnode* find(slistnode* phead, datatype x);

void insert(slistnode* pos, datatype x);

void erase(slistnode* pos);

void destorylist(slistnode*& phead);

void destorylist(slistnode*& phead)

phead = null;

}slistnode* _buynode(datatype x)

void printslist(slistnode* phead)

printf("null\n");

}//void pushback(slistnode** pphead, datatype x)

////    else

//    

////        tail->next = _buynode(x);

//    }

//}void pushback(slistnode* & phead, datatype x)

else

tail->next = _buynode(x);

}}void popback(slistnode* & phead)

else if(phead->next == null)

else

free(tail);

prev->next = null;

}}void pushfront(slistnode* & phead, datatype x)

else

}void popfront(slistnode*& phead)

else if(phead->next == null)

else

}slistnode* find(slistnode* phead, datatype x)

cur = cur->next;

}return null;

}void insert(slistnode* pos, datatype x)

void erase(slistnode*& phead, slistnode* pos)

slistnode* prev = phead;

while (prev)

prev = prev->next;

}}/// 刪除乙個無頭單鏈表的非尾節點

void delnontailnode(slistnode* pos)

// 在無頭單鏈表的乙個非頭節點前插入乙個節點

void insertfrontnode(slistnode* pos, datatype x)

//struct ret

//;slistnode* findmidnode(slistnode* phead)

//while (fast)

////    else

//    

//    slow = slow->next;

//}return slow;

}slistnode* findknode(slistnode* phead, int k)

if (k > 0)

return null;

while (fast)

return slow;

}void printtailtohead(slistnode* phead)

}slistnode* reverse(slistnode* phead)

return newhead;

}.cpp 檔案:

#include #include "slist.h"

// pushback/popback

void test1()

// pushfront/popfront

void test2()

// find/insert

void test3()

//delnontailnode

void test4()

void test5()

void test6()

void test7()

void test8()

void test9()

void test10()

int main()

C語言單鏈表

include include include define error 0 typedef struct lnode lnode,linklist linklist initlist linklist l node next null l node return l int listlength ...

C語言單鏈表

學過線性表中的順序表的都知道,順序表裡的資料在物理記憶體上是相鄰的,所以當我們在順序表中想要訪問下乙個元素時可以直接去訪問,就像陣列一樣。但是單鏈表卻不同,單鏈表的資料儲存的位置是動態分配的,也就是說單鏈表的儲存在物理記憶體上不是相鄰的,所以我們就只能通過指標這種方式來把單鏈表串起來,通過指標來訪問...

C語言單鏈表

一 單鏈表的建立 有了動態記憶體分配的基礎,要實現鍊錶就不難了。所謂鍊錶,就是用一組任意的儲存單元儲存線性表元素的一種資料結構。鍊錶又分為單鏈表 雙向鍊錶和迴圈鍊錶等。我們先講講單鏈表。所謂單鏈表,是指資料接點是單向排列的。乙個單鏈表結點,其結構型別分為兩部分 1 資料域 用來儲存本身資料 2 鏈域...