建立標頭檔案nlist.h
#pragma once
//不帶頭節點的鍊錶,主要應用在迴圈鍊錶中,其缺點,操作複雜(會出現二級指標),
//優點:靈活(頭指標指向哪個節點哪個節點就是第乙個節點)
//不帶頭節點的單鏈迴圈鍊錶,尾節點的next指向第乙個節點
typedef
struct nnode
nnode,
*pnlist;
//初始化函式,將頭指標置null,會出現二級指標
void
initlist
(pnlist *pplist)
;//頭插,需要修改頭指標,會出現二級指標
bool insert_head
(pnlist *pplist,
int val)
;//尾插,有可能需要修改頭指標,會出現二級指標
bool insert_tail
(pnlist *pplist,
int val)
;//在plist中查詢關鍵字key,找到返回下標,失敗返回null
nnode *
search
(pnlist plist,
int key)
;//判空
bool isempty
(pnlist plist)
;//刪除plist中的第乙個key,有可能需要修改頭指標,會出現二級指標
bool deleteval
(pnlist *pplist,
int key)
;//獲取資料長度
intgetlength
(pnlist plist)
;//輸出所有資料
void
show
(pnlist plist)
;//清空資料,需要修改頭指標,會出現二級指標
void
clear
(pnlist *pplist)
;//銷毀動態記憶體,需要修改頭指標,會出現二級指標
void
destroy
(pnlist *pplist)
;
建立nlist.cpp檔案
#include
#include
#include
#include
"nlist.h"
//初始化函式,將頭指標置null,會出現二級指標
void
initlist
(pnlist *pplist)
//頭插,需要修改頭指標,會出現二級指標
bool insert_head
(pnlist *pplist,
int val)
else
return true;
}//尾插,有可能需要修改頭指標,會出現二級指標
bool insert_tail
(pnlist *pplist,
int val)
else
return true;
}//在plist中查詢關鍵字key,找到返回節點,失敗返回null
nnode *
search
(pnlist plist,
int key)}if
(q->data==key)
return
null;}
//判空,判斷plist是否為null
bool isempty
(pnlist plist)
//刪除plist中的第乙個key,有可能需要修改頭指標,會出現二級指標
bool deleteval
(pnlist *pplist,
int key)
nnode *p;
nnode *q;
for(q=
*pplist;q->next!=
*pplist;q=q->next)}
p=*pplist;
if(p->data==key)
return false;
}//獲取資料長度
intgetlength
(pnlist plist)
return count;
}//輸出所有資料
void
show
(pnlist plist)
printf
("%d \n"
,p->data);}
//清空資料,需要修改頭指標,會出現二級指標
void
clear
(pnlist *pplist)
//銷毀動態記憶體,需要修改頭指標,會出現二級指標
void
destroy
(pnlist *pplist)
*pplist=
null
;}
約瑟夫環問題(不帶頭結點單迴圈鍊錶實現和陣列實現)
q 略 a 為了簡化過程,類中只有3個函式即可,構造,增加,約瑟夫環解決函式 ps 做這道題是為了鞏固鍊錶知識,在這過程中,this指標很隱蔽,code include using namespace std template struct linknode linknode t item,link...
不帶頭結點的雙向迴圈鍊錶
基本概念 迴圈鍊錶 將單鏈表中最後乙個結點的next指向頭結點或者空指標,就使得整個單鏈表形成乙個環,這種頭尾相接的單鏈表稱為單迴圈鍊錶,簡稱迴圈鍊錶。雙向鍊錶 是在單鏈表的每個結點中,再設定乙個指向其前驅結點的指標域prior,在雙向鍊錶的結點中有兩個指標域,乙個next指向直接後繼,乙個prio...
C 不帶頭結點的單迴圈鍊錶解決約瑟夫環問題
重新把殷人昆的c 資料結構 2版 重新走一遍,發現以前的基礎太差,這個簡單的基礎的東西都搞了好久才搞出來啊 言歸正題 首先建立要力乙個circlist.h標頭檔案 如下 不帶頭結點的單迴圈鍊錶 ifndef circlist h define circlist h ifndef ch h defin...