資料結構 程式設計實現乙個雙向鍊錶節點的刪除

2022-08-26 21:21:23 字數 2246 閱讀 5646

1:**如下:

//

//#include

"stdafx.h

"#include

#include

#include

using

namespace

std;

typedef

struct dbnode //

雙向鍊錶結構體

dbnode;

dbnode *createnode(int data)//

建立乙個節點,返回新建立的節點

dbnode *createlist(int head)//

建立乙個煉表頭,引數給出表頭節點資料,表頭節點不作為存放有意義資料的節點

/*插入新節點,總是在表尾插入;返回表頭節點

*/引數1是鍊錶的表頭節點,引數2是要插入的節點,其資料為data

/*---在雙向鍊錶尾部插入新節點的方法---

*/q->right =node;

node->left =q;

node->right =null;

/*---

*/return

head;

}void printlist(dbnode *head)//

列印整個鍊錶

pnode =head;

while (pnode !=null)

printf("\n

");}int getlength(dbnode *head)//

雙向鍊錶的測長,引數為煉表頭節點

pnode = head->right;

while (pnode !=null)

return

count;}/*

查詢節點,成功返回滿足條件的節點指標,否則返回null

*/dbnode *findnode(dbnode *head, int data)//

引數1是鍊錶的頭結點,引數2是要查詢的節點,其資料為data

/*找到資料或者到達鍊錶末尾,推出while迴圈

*/while (pnode->right != null && pnode->data !=data)

//沒有找到資料為data的節點,返回null

if (pnode->right ==null)

return

pnode;}/*

在node節點之後插入新節點

*/void insernode(dbnode *node, int

data)

if (node->right == null)//

node為最後乙個節點

else

//node為中間節點}/*

刪除滿足指定條件的節點,返回表頭節點,刪除失敗,返回null(失敗的原因是不存在該節點)

*/dbnode *deletenode(dbnode *head, int data)//

引數1是鍊錶的表頭節點,引數2是要插入的節點,其資料為data

else

if (pnode->left == null)//

node為第乙個節點

}else

if (pnode->right == null)//

node為最後乙個節點

else

free(pnode);//

釋放已被刪除的節點空間

return

head;

}int

main()

printlist(head);

cout

<< "

"<< findnode(head, 2) <

cout

<< "

資料為:

"<< findnode(head, 2)->data <

insernode(findnode(head,

2), 666

); cout

<< "

在資料為2的節點後插入666:

"<

printlist(head);

head = deletenode(head, 666

); cout

<< "

刪除666後:

"<

printlist(head);

return0;

}

view code

執行結果:

資料結構 程式設計實現乙個雙向鍊錶的查詢

1 如下 include stdafx.h include include include using namespace std typedef struct dbnode 雙向鍊錶結構體 dbnode dbnode createnode int data 建立乙個節點,返回新建立的節點 dbno...

資料結構 程式設計實現乙個雙向鍊錶節點的插入

1 這裡分為兩種插入情況 一種是 插入位置在中間,另一種是插入位置在末尾。兩種情況有一點不同 插入位置在中間時需要把p的原後繼節點的前驅指標指向新插入的節點。include stdafx.h include include include using namespace std typedef st...

資料結構複習 之 乙個簡單雙向鍊錶的實現

1.什麼時候能默寫出來呢?include iostream using namespace std struct node class link void insertnode void insertnode node ptr void insertnodeathead node ptr void ...