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

2021-09-24 00:06:43 字數 1567 閱讀 6494

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

//#include "stdafx.h"

#include#include #include using namespace std;

typedef struct dbnode //雙向鍊錶結構體

dbnode;

dbnode *createnode(int data)//建立乙個節點,返回新建立的節點

dbnode *createlist(int head)//建立乙個煉表頭,引數給出表頭節點資料,表頭節點不作為存放有意義資料的節點

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

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

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為中間節點

}int main()

printlist(head);

cout << "資料為:" << findnode(head, 2)->data << endl;

insernode(findnode(head, 2), 666);

cout << "在資料為2的節點後插入666:" << endl;

printlist(head);

return 0;}

view code

執行結果:

收藏

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

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

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

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

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

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