// Test515.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

typedef int DATA;

struct SNode
{
DATA data;
SNode* pNext;
};

struct NodeList
{
SNode* m_nodeHead;
int count;

NodeList()
{
m_nodeHead = NULL;
}
~NodeList()
{
RemoveAll();
}
void AddNode(DATA data)
{
SNode* p = new SNode;
p->data = data;
p->pNext = m_nodeHead;
m_nodeHead = p;
}
void RemoveAll()
{
SNode *p = m_nodeHead, *p1;
while (p)
{
p1 = p;
p = p->pNext;
delete p1;
}

m_nodeHead = NULL;
}
int Input()
{
int i = 0;
cout << "请输入一个数据:";
cin >> i;
return i;
}
void Output()
{
SNode* p = m_nodeHead;
while (p)
{
cout << p->data << endl;
p = p->pNext;
}
}

int GetNodeNum()
{
count = 0;
SNode* p = m_nodeHead;
while (p)
{
p = p->pNext;
++count;
}
return count;
}
void Menu()
{
cout << "请选择:" << endl;
cout << "1.插入数据" << endl;
cout << "2.打印数据" << endl;
cout << "3.打印节点数量" << endl;
int i = 0;
cin >> i;
switch (i)
{
case 1:
AddNode(Input());
break;
case 2:
Output();
system("pause");
break;
case 3:
cout << "节点数量为:" << GetNodeNum() << endl;
system("pause");
break;
default:
break;
}
}
};

int main()
{
NodeList list1, list2;
int i = 0;
do
{
system("cls");
cout << "请选择链表1或2:";
cin >> i;
switch (i)
{
case 1:
list1.Menu();
break;
case 2:
list2.Menu();
break;
default:
cout << "只能输入1或2,输入0则退出。" << endl;
system("pause");
break;
}
} while (i);

return 0;
}

1.析构函数中一般不需要写东西,写的时候只需要考虑对申请过的堆空间进行清理和释放,对象本身占用的无论是栈空间还是全局空间都由系统自动清理。

2.类成员变量的生命周期:对象构造函数执行到析构函数执行对应成员变量生命期开始到结束。

3.类对象的生命周期:(1)局部对象,从定义时调用构造函数开始,在程序离开局部对象的作用域时析构;(2)全局对象,main函数拿到程序的控制权之前,全局对象的生命周期就已经开始,在main函数结束之后,全局对象的生命周期结束;(3)静态对象,在静态对象被定义时生命周期开始,在程序结束时,静态对象生命周期结束。(4)new关键字定义的对象,创建对象时,调用构造函数,对象生命周期开始,什么时候delete,什么时候调用析构函数,对象生命周期随之结束。

4.struct成员变量和成员函数的缺省权限是public的,class成员变量和成员函数的缺省权限是private的。

单向链表&有关类和对象的更多相关文章

  1. 单向链表的简单Java实现-sunziren

    写在前面,csdn的那篇同名博客就是我写的,我把它现在在这边重新发布,因为我实在不想用csdn了,那边的广告太多了,还有就是那个恶心人的“阅读更多”按钮,惹不起我躲得起. 最近面试的过程中,发现有的公 ...

  2. Python手写模拟单向链表对象,栈对象和树

    单向链表: class error(Exception): def __init__(self,msg): super(error,self).__init__() self.msg=msg def ...

  3. 数据结构——Java实现单向链表

    结点类: /** * @author zhengbinMac * 一个OnelinkNode类的对象只表示链表中的一个结点,通过成员变量next的自引用方式实现线性表中各数据元素的逻辑关系. */ p ...

  4. 单向链表JAVA代码

        //单向链表类 publicclassLinkList{       //结点类     publicclassNode{         publicObject data;         ...

  5. [Java算法分析与设计]--单向链表(List)的实现和应用

    单向链表与顺序表的区别在于单向链表的底层数据结构是节点块,而顺序表的底层数据结构是数组.节点块中除了保存该节点对应的数据之外,还保存这下一个节点的对象地址.这样整个结构就像一条链子,称之为" ...

  6. Python链表的实现与使用(单向链表与双向链表)

    参考[易百教程]用Python实现链表及其功能 """ python链表的基本操作:节点.链表.增删改查 """ import sys cl ...

  7. JAVA 单向链表

    package com.session.link; /** * 单向链表 */public class LinkedList<T> { private Node head;//指向链表头节 ...

  8. Java 单向链表学习

    Java 单向链表学习 链表等同于动态的数组:可以不同设定固定的空间,根据需要的内容动态的改变链表的占用空间和动态的数组同一形式:链表的使用可以更加便于操作. 链表的基本结构包括:链表工具类和节点类, ...

  9. java对单向单向链表的操作

    概述:众所周知,数据对于数据的存储时连续的,也就是说在计算机的内存中是一个整体的.连续的.不间断的ADT数据结构.伴随的问题也会随之出现,这样其实对于内存的动态分配是不灵活的.而链表具备这个优点.因此 ...

  10. 10C++类和对象

    类和对象 8.1 面向对象程序设计方法概述 到目前为止,我们介绍的是C++在面向过程的程序设计中的应用.对于规模比较小的程序,编程者可以直接编写出一个面向过程的程序,详细地描述每一瞬时的数据结构及对其 ...

随机推荐

  1. python torch 解决OSError: [WinError 126] 找不到指定的模块。 Error loading "D:\Anaconda3\lib\site-packages\torch\lib\asmjit.dll" or one of its dependencies.(安装完torch模块后出现找不到指定模块的问题)

    昨天安装了一下python的torch模块,然后出现了以下错误: 根据叙述是因为dll文件,后来 经过我的思考...,升级了一下numpy库,就没有问题了. 根据叙述是因为dll文件,后来 经过我的思 ...

  2. loj6851

    (CF1761D Tester Solution in Chinese) 定义 \(L(v)=\log_2\operatorname{lowbit}(v+1)\):也就是说,\(L(v)\) 是 \( ...

  3. SHR常用f7[更新ing]

    <field id="unit" name="unit" label="单位" dataType="F7" uip ...

  4. 关于el-dialog弹窗组件关闭报错事件

    以下写法,向父组件抛出关闭事件, (正常点击弹窗footer的关闭时没有报错,但是点击空白处及右上角的×号,就会报以上错误) 原因, close事件为已经关闭了弹窗后的事件,官方还给出了  befor ...

  5. 解决The following signatures couldn't be verified because the public key is not available: NO_PUBKEY FEEA9169307EA071 NO_PUBKEY 8B57C5C2836F4BEB

    问题 yang@k8s-master:/etc/apt/sources.list.d$ sudo apt update Get:1 https://mirrors.aliyun.com/kuberne ...

  6. DOSBox进行文件操作

    1.使用DOSBox进行汇编语言的学习 2.输入edit进行asm文件编辑,保存后输入masm 文件名.asm,进行编译:输入link 文件名进行连接:输入debug 文件名.exe进行执行,并进行调 ...

  7. 服务器 安装docker (启动坑了很久才成功)docker-compose

    安装docker: 1.Docker要求CentOS系统的内核版本高于 3.10 ,    通过 uname -r 命令查看你当前的内核版本是否支持安账docker 2.更新yum包: sudo yu ...

  8. 解决未定义的count键“报错为:"Uncaught ReferenceError: count is not defined"

    报错: 源码:Vuex仓库.js let state = {     count } export default state   解决:未赋值的count键

  9. Surface Pro (1796),安装Win11之后出现的问题。

    2020年年中我为了体验微软新的操作系统,加入了Review计划,即:Windows预览体验计划.然后升级到了Win11.由于苏菲一直是作为辅助设备用,所以平时就是开节电模式,中途也升级了几次Win1 ...

  10. python机器学习——BP(反向传播)神经网络算法

    背景与原理: BP神经网络通常指基于误差反向传播算法的多层神经网络,BP算法由信号的前向传播和反向传播两个过程组成,在前向传播的过程中,输入从输入层进入网络,经过隐含层逐层传递到达输出层输出,如果输出 ...