// 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. [BalticOI 2017] Cat in a tree

    [BalticOI 2017] Cat in a tree 神仙美少女 Tweetuzki 学姐用了长剖+线段树,私以为长剖可以做到线性. 简要题意 给定 \(n\) 个点的树,点集 \(S\) 合法 ...

  2. Background Suppression Network for Weakly-supervised Temporal Action Localization概述

    0. 前言 相关资料: arxiv github 论文解读1,论文解读2 论文基本信息: 领域:弱监督时序行为定位 发表时间:AAAI 2020(2019.11.22) 1.针对的问题 弱监督视频动作 ...

  3. ORACLE 数据库备份脚本(数据泵2-指定用户)

    #!/bin/bash export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK #定义字符集RQ=`date +20%y-%m-%d` #创建数据泵目录directory, ...

  4. sql 加工后--小文件解决方案

    10.24.8.5 # 切换用户 su - hive # 查看表文件 [hive@hadoop-0001 ~]$ hdfs dfs -ls /user/hive/warehouse/bibase.db ...

  5. kubernetes中 pause的作用

    pause的作用 重要概念:Pod内的容器都是平等的关系,共享Network Namespace.共享文件 pause容器的最主要的作用:创建共享的网络名称空间,以便于其它容器以平等的关系加入此网络名 ...

  6. Unity连接海康摄像头(shader转码)硬解码

    1.第一种方法 之前写过就不写了给个地址 2.第二种方法 用海康的SDK (shader转码) 先上效果 demo下载地址: 点击下载 开启多个摄像头的话 第二种比一种流畅

  7. fork子进程父进程死掉之后,getppid()不为1的解决办法

    代码例子:程序在执行之后,会一直死在while中,打印发现当父进程被终止,getppid() 的值也不为1 pid_t pid;if((pid = fork()) < 0){ printf(&q ...

  8. git 产生冲突的处理方式

    理解你操作图形化的时候, git 在什么? 了解你在做的文件的git状态? 1. 添加文件 git add . -A git commit -m "your commit here" ...

  9. mac 查看,终止进程

    找到其他 活动监视器 在这里可以查看和cpu占用 杀死有问题的过程: 1.它占用了大量CPU周期或内存, 2.在"活动监视器"中被突出显示为已崩溃, 先单击该过程,点击x可以终止进 ...

  10. idea 常用的快捷键

    1.ctrl+shitf+u  大小写切换 2.ctrl+shitf+L 快速格式化代码 3.ctrl+alt+方向左键  快速回到上一层 4..ctrl+shitf+E 最近更改的文件 5.ctrl ...