鍊錶節點是否為空 C C 資料結構 鍊錶

2021-10-14 22:10:38 字數 1895 閱讀 6623

鍊錶(linked list)是一種基礎資料結構,是一種線性表,在每乙個節點裡存到下乙個節點的指標(pointer)。即每乙個節點都儲存著指向下乙個節點的資訊。

(1). 初始化乙個空鍊錶。

(2). 在鍊錶末端新增乙個新節點。

(3). 統計鍊錶的節點數。

(4). 在鍊錶指定位置插入。

(5). 刪除指定節點。

(6). 清空鍊錶

list.h

#ifndef list_h

#define list_h

#include using namespace std;

typedef struct dataitem;

typedef struct nodenode;

typedef node* listnode;

void initlist(listnode *plist);

unsigned int listnodecnt(const listnode *plist);

void addlistnode(item item, listnode *plist);

void deletelistnode(item item, listnode *plist);

void showlistnode(const listnode *plist);

void clearlist(listnode *plist);

#endif // list_h

list.cpp

#include "list.h"

void initlist(listnode *plist)

unsigned int listnodecnt(const listnode *plist)

while (plistnode != nullptr)

return nodecnt;

}void addlistnode(item item, listnode *plist)

else

//在鍊錶末端插入新元素

plistnode->m_pnext = pnew;

}}void deletelistnode(item item, listnode *plist)

listnode pdeletelistnode = nullptr;

//檢查刪除的節點是不是存在,若存在檢查是不是頭節點

if((*plist)->m_value.value == item.value)else

if((plistnode->m_pnext != nullptr) && plistnode->m_pnext->m_value.value == item.value)

}if(pdeletelistnode != nullptr)

}void showlistnode(const listnode *plist)

while (plistnode != nullptr)

}void clearlist(listnode *plist)

while ((*plist) != nullptr)

}

main.cpp

#include "list.h"

//測試case

int main()

/****************測試case: 輸出節點**********====*/

showlistnode(&list);

/****************測試case: 統計節點個數**********====*/

C 資料結構 鍊錶(鍊錶節點建立)

本文是為了以下建立鍊錶更加方便,而編寫的c 標頭檔案,作用是建立乙個節點類,此處不採用class,而用struct。struct和class的區別在於 二者的訪問許可權不同!前者 訪問許可權是public 後者 訪問許可權是private 節點類的標頭檔案 如下 ifndef listnode hh...

鍊錶的中間節點和判斷鍊錶是否為環形鍊錶

基本思想 設定兩個指標,都指向鍊錶的頭節點。兩個指標同時從鍊錶的頭節點出發,乙個指標每次走一步,另乙個指標每次走兩步。1.走得快的指標走到鍊錶末尾時,走得慢的指標剛好指向鍊錶的中間節點。2.走得快的指標如果追的上走得慢的指標,則鍊錶為環形鍊錶,反之不是。如下 include include usin...

資料結構 鍊錶 雙向鍊錶

注意typedef的定義結構,以及dinklist的資料型別 typedef struct dnode dnode,dinklist 注意插入第乙個結點時,prior指標的空指向問題 if l next null 若l後繼結點為空 則省略該步驟 l next prior p 基本 頭插法建立雙向鍊錶...