数据结构练习——简单双链表

来源:互联网 发布:天河工商局软件地址 编辑:程序博客网 时间: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;}


原创粉丝点击