**:
我們首先建立乙個
標頭檔案,宣告乙個單鏈表結構:
#include "list.h"
[cpp]
view plain
copy
//建立乙個單鏈表結構,包含一些常見的操作
#ifndef _list_h_
#define _list_h_
#include
struct
node;
node* createlists(); //建立乙個空表,並返回表頭
void
deletelists(node* head);
//刪除表頭為head的該鍊錶
bool
islast(node* p);
node* find(int
x, node* head);
node* findprevious(int
x, node* head);
void
delete(
intx, node* head);
void
insert(node* p,
intx);
//在節點p後面插入x
void
outputlists(node* head);
//輸出鍊錶中所有元素的值
#endif
然後在檔案裡實現標頭檔案中的鍊錶操作:
#include "list.cpp"
[cpp]
view plain
copy
#include "list.h"
node* createlists()
void
deletelists(node* head)
} bool
islast(node* p)
node* find(int
x, node* head)
node* findprevious(int
x, node* head)
void
delete(
intx, node* head)
} void
insert(node* p,
intx)
void
outputlists(node* head)
std::cout
最後,我們用一段
main
**驗證一下正確性:
[cpp]
view plain
copy
#include
#include
#include "list.h"
using
namespace
std;
intmain()
; node *head = createlists();
node *p = head;
for(
inti=0;i<8;i++)
cout<
; outputlists(head);
if(islast(p))
cout<
else
cout<
if(find(15,head))
cout<
; else
cout<
; cout<
cout<
; delete(8, head);
if(find(8,head))
cout<
; else
cout<
; deletelists(head);
if(head->next)
cout<
; else
cout<
; return
0;
}
結果如下:
簡單單鏈表實現
這裡主要是實現了乙個單鏈表,不帶頭節點的單鏈表,使用了二級指標。如果是帶頭節點的鍊錶,其只要一級指標就可以了。接下來是乙個單鏈表翻轉的函式。typedef struct listnode listnode void reverselist listnode l pl l while pl null ...
簡單單鏈表
定義乙個單鏈表 include includetypedef struct node linklist 建立乙個長度為n的單鏈表 linklist creat list int n end next null return head 在單鏈表n的位置插入乙個節點 void link insert l...
簡單單鏈表操作 list
鍊錶 定義鍊錶是一種資料結構,通過指標來作為節點,將其連線起來,節點動態生成,鍊錶的儲存方式為動態,使用鍊錶結構可以克服陣列鍊錶需要預先知道資料大小的缺點,鍊錶結構可以充分利用計算機記憶體空間,實現靈活的記憶體動態管理。反之,即失去了陣列所擁有的優點。結構鍊錶有頭指標,首指標,尾指標。頭指標指向首指...