数据结构练习——简单双链表
来源:互联网 发布:天河工商局软件地址 编辑:程序博客网 时间:2024/06/07 23:02
头文件:NodeStruct.h//为了防止重定义结构体#ifndef _NODESTRUCT_H_#define _NODESTRUCT_H_#include<stdio.h>//单向链表节点数据结构typedef struct ListNode {int NodeNum;ListNode* next;}Listnode, *pListnode;//双向链表节点数据结构typedef struct DListNode {int NodeNum;DListNode* LeftLink;DListNode* RightLink;}DListnode, *pDListnode;#endif // !_NODESTRUCT_H
头文件: CDoubleList.h#include"NodeStruct.h"//双向链表类【这里习惯性就只采用尾插法构建了】class CDoubleList{public:CDoubleList();~CDoubleList();public:pDListnode m_PDListHead;pDListnode m_PDListFoot;public:int InitDoubleList();int InsertNodeToDoubleList(int item);int TraversalDoubleList();int CleanDoubleList();};
CPP文件:CDoubleList.cpp#include "stdafx.h"#include<iostream>#include "CDoubleList.h"CDoubleList::CDoubleList(){m_PDListHead = NULL;m_PDListFoot = NULL;}CDoubleList::~CDoubleList(){}int CDoubleList::InitDoubleList() {if (m_PDListHead){m_PDListFoot = m_PDListHead;return -1;}m_PDListHead = new DListnode();m_PDListHead->NodeNum = -1;m_PDListHead->LeftLink = NULL;m_PDListHead->RightLink = NULL;m_PDListFoot = m_PDListHead;return 0;}int CDoubleList::InsertNodeToDoubleList(int item) {pDListnode temp = new DListnode();temp->NodeNum = item;temp->RightLink = NULL;//将新节点挂在之前的尾节点之后temp->LeftLink = m_PDListFoot;m_PDListFoot->RightLink = temp;//之前的尾节点后移,更新定位m_PDListFoot = temp;return 0;}int CDoubleList::TraversalDoubleList(){//拷贝当前链表头指针pDListnode temp1 = m_PDListHead;//拷贝当前链表尾指针pDListnode temp2 = m_PDListFoot;std::cout << " 从头遍历当前双向链表:"<<std::endl;while (temp1) {std::cout << temp1->NodeNum << " --> ";temp1 = temp1->RightLink;}std::cout << std::endl<< " 从尾遍历当前双向链表:" << std::endl;while (temp2) {std::cout << temp2->NodeNum << " --> ";temp2 = temp2->LeftLink;}return 0;}int CDoubleList::CleanDoubleList(){pDListnode temp = NULL;//方式1:从头到尾依次释放while (m_PDListHead) {temp = m_PDListHead;m_PDListHead = m_PDListHead->RightLink;delete temp;temp = NULL;}return 0;}
测试程序入口:#include "stdafx.h"#include"CSingalList.h"#include"CDoubleList.h"//双向链表测试int main() {CDoubleList m_DList;m_DList.InitDoubleList();for (int i = 0; i < 3; i++) {m_DList.InsertNodeToDoubleList(i);}m_DList.TraversalDoubleList();m_DList.CleanDoubleList();std::cout << std::endl;system("pause");return 0;}
阅读全文
0 0
- 数据结构练习——简单双链表
- 数据结构练习——简单单链表
- 【数据结构练习】简单四则运算
- 简单数据结构—队列
- 数据结构练习2——括号匹配
- 数据结构—二叉树练习—递归
- 数据结构——顺序表删除练习
- 数据结构——滑动窗口练习
- 数据结构练习——双向链表
- 数据结构练习——无序树
- 新手数据结构练习——二叉树
- 简单数据结构实现——双链表
- 简单练习—字符串反转
- 简单背包练习——庆功会
- 简单背包练习—— 混合背包
- 简单背包练习——潜水员
- 简单背包练习——分组背包
- 重回JS—简单选择器(练习)
- 说一说IT行业与风投
- Eclipse中的快捷键快速生成常用代码(例如无参、带参构造,set、get方法),以及Java中重要的内存分析(栈、堆、方法区、常量池)
- 简单但细节问题思考
- python log模块最简单的写法
- redis---RDB
- 数据结构练习——简单双链表
- iOS
- contos7.4 安装lump环境php7.2+mysql7.2+nginx(最全面,无误的)
- Android 设置全屏沉浸式透明状态栏的工具类(超级简单,两步实现)
- Selenium-异常:Element is not currently visible and so may not be interacted with的解决
- adb和adbd分析
- syslog架构
- idea多模块开发
- Mac OS 安装 与 卸载 JDK