帶頭結點迴圈鍊錶

2021-08-08 13:28:17 字數 1778 閱讀 2548

上乙個說的是單鏈表,其實迴圈鍊錶跟單鏈表類似,單鏈表最後乙個節點(p)的next域為null即p->next=null而迴圈鍊錶(plist)的則為頭結點的位址,即p->next=plist。其餘的基本操作和單鏈表幾乎一樣,僅僅是單鏈表迴圈結束條件為!=null,而迴圈鍊錶是!=plist。

基本操作為:初始化,插入(頭插、尾插),查詢,刪除,判空,求長,摧毀,逆置。

.cpp:

#include #include #include #include "clist.h"

void initlist(clist plist)

plist->next = plist;//迴圈鍊錶

}//頭插

bool insert_head(clist plist,int val)

//尾插

bool insert_tail(clist plist,int val)

cnode *q = (cnode *)malloc(sizeof(cnode));

q->data = val;

//q插在p的後面

q->next = p->next;//q->next = plist;

p->next = q;

return true;

}cnode *search(clist plist,int key)//list

} return null;

}bool delete(clist plist,int key)

if(p->next != plist)//p不是最後的節點,刪除p後面的點,將後面的資料賦值到p中

else//p是最後乙個點

return true;

}bool isempty(clist plist)

int getlength(clist plist)

return count;

}void show(clist plist)

printf("\n");

}void clear(clist plist)

void destroy(clist plist)

}void revers(clist plist)

cnode *p=plist->next;

cnode *q;

plist->next=plist;

while(p!=plist)

}

.h:

#pragma once

//迴圈鍊錶,尾節點的next指向頭節點

typedef struct cnode

cnode,*clist;

void initlist(clist plist);//node *plist

//頭插

bool insert_head(clist plist,int val);

//尾插

bool insert_tail(clist plist,int val);

cnode *search(clist plist,int key);//list

bool delete(clist plist,int key);

bool isempty(clist plist);

int getlength(clist plist);

void show(clist plist);

void clear(clist plist);

void destroy(clist plist);

void revers(clist plist);

迴圈鍊錶的建立 帶頭結點

1.迴圈鍊錶與單鏈表的區別 1 初始化的時候,頭結點的next指向它自己 2 判斷條件上,由p null更換為p l 3 更新尾結點的時候,要由null改為 l 專案名稱 迴圈鍊錶的建立與基本操作 編譯環境 vc 2008 作者相關 最後修改 2019.5.31 學習目標 1.掌握迴圈鍊錶的基本操作...

鍊錶 帶頭結點的雙向迴圈鍊錶

還需改進 creat node這個函式應有返回型別,來判斷新建結點是否成功,不然主函式中不管成不成功都會訪問該節點成員。改了這個函式,在主函式中create node後要判斷是否成功,不成功就提示並退出函式,退出前別忘了還要釋放鍊錶!同時create link這個函式中也要判斷head是否申請成功,...

不帶頭結點的雙向迴圈鍊錶

基本概念 迴圈鍊錶 將單鏈表中最後乙個結點的next指向頭結點或者空指標,就使得整個單鏈表形成乙個環,這種頭尾相接的單鏈表稱為單迴圈鍊錶,簡稱迴圈鍊錶。雙向鍊錶 是在單鏈表的每個結點中,再設定乙個指向其前驅結點的指標域prior,在雙向鍊錶的結點中有兩個指標域,乙個next指向直接後繼,乙個prio...