單鏈表,顧名思義是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。
鍊錶中的資料是以結點來表示的,每個結點的構成:元素(資料元素的映象) + 指標(指示後繼元素儲存位置),元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。
我們在這裡使用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 鏈域...