不帶頭結點的單迴圈鍊錶

2021-10-06 07:54:29 字數 2439 閱讀 8790

建立標頭檔案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...