文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++链表类怎么封装

2023-06-30 10:42

关注

这篇文章主要介绍“C++链表类怎么封装”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++链表类怎么封装”文章能帮助大家解决问题。

1.CList.h

#ifndef CLIST_H#define CLIST_H class CNode         //节点类{public:    CNode();    ~CNode();    void *data;     //数据域  节点数据的地址    CNode *pnext;   //指针域  保存下一个节点的地址protected:private:}; class CList         //链表类{public:    CList();    ~CList();    void addList(void *data);                  //在尾部添加节点    int getListCount();                        //获取节点的个数    int insertListByPos(int pos,void *data);   //根据pos插入节点    int deleteListByPos(int pos);              //删除节点    void *getNodeByPos(int pos);               //获取节点数据    void *freeList();                          //释放链表protected:private:    CNode *head;                               //链表头    int count;                                 //节点个数}; #endif

2.CList.cpp

#include"CList.h"#include<stdio.h>#include<cstring>//memset头文件 CNode::CNode(){    this->data = NULL;    this->pnext = NULL;} CNode::~CNode(){} CList::CList(){    this->head = new CNode;    this->count = 0;} CList::~CList(){} //在尾部添加节点void CList::addList(void *data){    CNode *tmp = this->head;    while(tmp->pnext!=NULL)    {        tmp = tmp->pnext;        }    CNode *newNode = new CNode;//创建新节点    tmp->pnext = newNode;    newNode->data = data;    ++(this->count);} //获取节点的个数int CList::getListCount(){    return this->count;} //根据pos插入节点int CList::insertListByPos(int pos,void *data){    int num = 0;    CNode* tmp = this->head;    while(tmp->pnext!=NULL)    {        count++;        tmp = tmp->pnext;        if(pos == count)        {            CNode* newNode = new CNode;  //新节点            memset(newNode,'\0',sizeof(CNode));            newNode->data = data;            newNode->pnext = tmp->pnext;            tmp->pnext = newNode;            return 1;        }    }    return 0;} //删除节点int CList::deleteListByPos(int pos){    int count = 0;    CNode* tmp = head->pnext,*pre = head;    while(tmp!=NULL)    {        count++;        if(count == pos)        {            pre->pnext = tmp->pnext;            //tmp数据域释放掉            delete tmp->data;            delete tmp;            return 1;        }        pre = pre->pnext;        tmp = tmp->pnext;    }    return -1;} //获取节点数据void* CList::getNodeByPos(int pos){    int count = 0;    CNode* tmp = head;    while(tmp->pnext!=NULL)    {        count++;        tmp = tmp->pnext;        if(pos == count)        {            return tmp->data;            }    }    return NULL;} //释放链表void* CList::freeList(){    CNode* tmp = head;    while(tmp!=NULL)    {        head = head->pnext;        delete tmp->data;        delete tmp;        tmp = head;        }    return this->head;}

3.main.cpp

计算总节点数:

#include<iostream>using namespace std;#include"CTools.h"#include "CLabel.h"#include"CEdit.h"#include"CButton.h"#include"CtrBase.h"#include"CLogin.h"      //显示登录窗口#include"CIndexWin.h"   //管理员主界面窗口#include"CManagerWin.h" //经理主界面窗口#include"CWaiterWin.h"  //服务员主界面窗口#include<stdlib.h>#include"CList.h" int main(){    CLoginWin *login = new CLoginWin(12,5,30,20);    CIndexWin *index = new CIndexWin(3,3,25,23);    CManagerWin *manager = new CManagerWin(3,3,25,23);    CWaiterWin *waiter = new CWaiterWin(3,3,25,30);         CList *myList = new CList;    myList->addList(login);    myList->addList(index);    myList->addList(manager);    myList->addList(waiter);    cout<<myList->getListCount()<<endl;//4    return 0;}

关于“C++链表类怎么封装”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯