日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构-编程实现一个双链表的建立,双链表的打印,双链表的测长

發布時間:2024/4/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构-编程实现一个双链表的建立,双链表的打印,双链表的测长 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1:雙鏈表的建立,打印,代碼如下:

// ConsoleApplication24.cpp : 定義控制臺應用程序的入口點。 // #include "stdafx.h" #include<malloc.h> #include <iostream> #include <assert.h> using namespace std;typedef struct DbNode //雙向鏈表結構體 {int data;//節點數據DbNode *left;//前驅節點指針DbNode *right;//后繼節點指針 }DbNode;DbNode *CreateNode(int data)//創建一個節點,返回新創建的節點 {DbNode *pnode = (DbNode*)malloc(sizeof(DbNode));pnode->data = data;pnode->left = pnode->right = pnode;//初始化的節點的前驅和后繼都等于本身的地址/*---測試---cout << "新創建節點的數據:"<<pnode->data << endl;cout << "新創建節點的地址:" << pnode << endl;cout << "新創建節點的前驅:" << pnode->left << endl;cout << "新創建節點的后繼:" << pnode->right << endl;cout << "**********************************" << endl;---*/return pnode; }DbNode *CreateList(int head)//創建一個鏈表頭,參數給出表頭節點數據,表頭節點不作為存放有意義數據的節點 {DbNode *pnode= (DbNode*)malloc(sizeof(DbNode));pnode->data = head;pnode->left = pnode;pnode->right = NULL;/*---測試---cout << "鏈表頭數據:" << pnode->data << endl;cout << "鏈表頭的地址:" << pnode << endl;cout << "鏈表頭的前驅:" << pnode->left << endl;cout << "鏈表頭的后繼:" << pnode->right << endl;cout << "**********************************" << endl;---*/return pnode; }/*插入新節點,總是在表尾插入;返回表頭節點*/ DbNode *AppendNode(DbNode *head, int data)//參數1是鏈表的表頭節點,參數2是要插入的節點,其數據為data {DbNode *node = CreateNode(data);//創建數據為data的新節點DbNode *p = head, *q=NULL;while (p != NULL)//循環結束后,最后一個節點是q,p是q的right {q = p;p = p->right;}/*---在雙向鏈表尾部插入新節點的方法---*/q->right = node;node->left = q;node->right = NULL;/*---*//*---測試---cout << "新插入的數據:" << node->data << endl;cout << "新插入的地址:" << node << endl;cout << "新插入的前驅:" << node->left << endl;cout << "新插入的后繼:" << node->right << endl;cout << "**********************************" << endl;---*/return head;}void PrintList(DbNode *head)//打印整個鏈表 {DbNode *pnode = NULL;if (head == NULL)//鏈表為空 {return;}pnode = head;while (pnode != NULL){printf("%d", pnode->data);pnode = pnode->right;}printf("\n"); }int main() {/*---生成從0-9含有10個節點的循環鏈表---*/DbNode *head = CreateList(0);//生成鏈表頭for (int i = 1; i < 10; i++){head = AppendNode(head, i);//添加9個節點,數據為從1到9 }PrintList(head);return 0; } View Code

運行結果:

2:雙鏈表的測長,代碼如下:

// ConsoleApplication24.cpp : 定義控制臺應用程序的入口點。 // #include "stdafx.h" #include<malloc.h> #include <iostream> #include <assert.h> using namespace std;typedef struct DbNode //雙向鏈表結構體 {int data;//節點數據DbNode *left;//前驅節點指針DbNode *right;//后繼節點指針 }DbNode;DbNode *CreateNode(int data)//創建一個節點,返回新創建的節點 {DbNode *pnode = (DbNode*)malloc(sizeof(DbNode));pnode->data = data;pnode->left = pnode->right = pnode;//初始化的節點的前驅和后繼都等于本身的地址return pnode; }DbNode *CreateList(int head)//創建一個鏈表頭,參數給出表頭節點數據,表頭節點不作為存放有意義數據的節點 {DbNode *pnode= (DbNode*)malloc(sizeof(DbNode));pnode->data = head;pnode->left = pnode;pnode->right = NULL;return pnode; }/*插入新節點,總是在表尾插入;返回表頭節點*/ DbNode *AppendNode(DbNode *head, int data)//參數1是鏈表的表頭節點,參數2是要插入的節點,其數據為data {DbNode *node = CreateNode(data);//創建數據為data的新節點DbNode *p = head, *q=NULL;while (p != NULL)//循環結束后,最后一個節點是q,p是q的right {q = p;p = p->right;}/*---在雙向鏈表尾部插入新節點的方法---*/q->right = node;node->left = q;node->right = NULL;/*---*/return head;}void PrintList(DbNode *head)//打印整個鏈表 {DbNode *pnode = NULL;if (head == NULL)//鏈表為空 {return;}pnode = head;while (pnode != NULL){printf("%d", pnode->data);pnode = pnode->right;}printf("\n"); }int GetLength(DbNode *head)//雙向鏈表的測長,參數為鏈表頭節點 {int count = 1;DbNode *pnode = NULL;if (head==NULL)//head為NULL表示鏈表空 {return 0;}pnode = head->right;while (pnode != NULL){pnode = pnode->right;//使用right指針遍歷count++;}return count; }int main() {/*---生成從0-9含有10個節點的循環鏈表---*/DbNode *head = CreateList(0);//生成鏈表頭for (int i = 1; i < 10; i++){head = AppendNode(head, i);//添加9個節點,數據為從1到9 }PrintList(head);cout << "鏈表的長度為:" << GetLength(head) << endl;return 0; } View Code

運行結果:

轉載于:https://www.cnblogs.com/lovemi93/p/7602844.html

總結

以上是生活随笔為你收集整理的数据结构-编程实现一个双链表的建立,双链表的打印,双链表的测长的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。