【C++:类和对象】处理一个线性表,动态产生线性存储空间,并实现线性表的部分操作
代码:
#include <iostream>
#include <vector>
#include <string.h>
#include <cmath>
#include <algorithm>
using namespace std;
class ListClass{int *ListPtr;//指向线性表的指针int nLen;//线性表的长度int nElem;//线性表中元素个数
public:ListClass(int n=10)//构造函数{nElem=0;nLen=n;if(n)ListPtr=new int[n];//分配空间elseListPtr=NULL;}~ListClass()//析构函数{delete []ListPtr;//释放线性表的空间}int Elem(int);//重载函数1:在线性表末尾添加元素int &Elem(unsigned n)//重载函数2:返回下标为n的元素的引用{return ListPtr[n];}int Elem(void)//重载函数3:返回线性表中的元素个数{return nElem;}int Len(void){return nLen;}int GetElem(int i){if(i<nElem&&i>=0)return ListPtr[i];else{cout<<"下标越界"<<endl;return -1;}}void Print(void);
};
int ListClass::Elem(int elem)
{if(nLen==nElem)//线性表已满{int *newptr;newptr=new int[nLen+10];//申请新的线性表的空间,一次扩充10个for(int i=0;i<nLen;i++)newptr[i]=ListPtr[i];delete []ListPtr;ListPtr=newptr;nLen+=10;}ListPtr[nElem++]=elem;return nElem;
}
void ListClass::Print(void)
{for(int i=0;i<nElem;i++)cout<<ListPtr[i]<<"\t";cout<<endl;
}
int main()
{ListClass list(6);for(int i=0;i<5;i++)list.Elem(i);//向线性表中添加元素cout<<"线性表的长度为:"<<list.Len()<<endl;cout<<"线性表中的元素个数为:"<<list.Elem()<<endl;//调用重载函数3cout<<"线性表中的元素为:";list.Print();list.Elem(3u)=100;cout<<"线性表中下标为3的元素的值为:"<<list.GetElem(3)<<endl;list.Elem(20);list.Elem(200);//向线性表末尾添加20和200cout<<"现在线性表的长度为:"<<list.Len()<<endl;cout<<"现在线性表中元素个数为:"<<list.Elem()<<endl;//调用重载函数3cout<<"现在线性表中的元素为:"<<endl;list.Print();cout<<"线性表中的最后一个元素为:"<<list.GetElem(list.Elem()-1)<<endl;//调用重载函数3return 0;
}
输出结果:
线性表的长度为:6
线性表中的元素个数为:5
线性表中的元素为:0 1 2 3 4
线性表中下标为3的元素的值为:100
现在线性表的长度为:16
现在线性表中元素个数为:7
现在线性表中的元素为:
0 1 2 100 4 20 200
线性表中的最后一个元素为:200
【C++:类和对象】处理一个线性表,动态产生线性存储空间,并实现线性表的部分操作相关推荐
- 装饰器/使用类和对象封装一个工具类
# coding:utf-8 # 装饰器是以@开头,@结构称为语法糖,装饰器的作用主要是给现有的函数增加一些额外的功能. # @classmethod # @staticmethod # @prope ...
- C++类和对象——设计一个长方形类
class Rectangle {//在此处实现Rectangle类public:void Set(int h,int w){//设置长方形的高和宽height=h;width=w;}int GetA ...
- 【c++类和对象——设计一个学生类】
设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,并且可以显示. 解法1: #include<iostream> using namespace std; #include<s ...
- 【黑马程序员】C++核心编程2 -类与对象(封装、继承和多态)-this指针-友元-运算重载符-文本操作(附测试用例源码、测试结果图及详细注释)
- 设计如下类: 1) 建立一个Point类,表示平面中的一个点;建立一个Line类,表示平面中的一条线端, 内含两个Point类的对象;建立Triangle类,表示一个三角形
设计如下类: 1) 建立一个Point类,表示平面中的一个点:建立一个Line类,表示平面中的一条线端, 内含两个Point类的对象:建立Triangle类,表示一个三角形,内含三个L ...
- python类和对象详解_Python公开课 - 详解面向对象
前言 在C语言中,单纯通过结构化的函数也可以实现很好的软件,顺序思路比较好理解:而C++则以面向对象的思维来进行代码组织,通过定义对象.成员变量.成员函数.以封装.继承和多态等方式来更灵活处理业务逻辑 ...
- C++学习笔记:(一)面向对象 类与对象
目录 1.面向对象的概念 2.类与对象 2.1 类的定义格式 2.2 对象的定义与使用 2.3 构造函数和析构函数 2.4 内存的动态分配 2.5 对象数组和对象指针 2.6 函数参数的传递机制 2. ...
- (教学思路 c#之类一)声明类和对象、定义类成员及其引用
上一节(教学思路 c#之面向对象二)初步理解面向对象的基本概念中,我没有提到任何的代码,只是用语言和实例来说明什么是类和对象以及面向对象的特性等基本概念,类是c#程序语言的重要核心,也是构建应用程序最 ...
- 类 Class 对象、定义、方法
面向对象的定义 类 Class: 用来描述具体相同的属性和方法的对象的集合.定义了该集合中每个对象所共有的属性和方法.对象是类的示例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在 ...
- 什么叫做类数组对象?
JavaScript中,数组是一个特殊的对象,其property名为正整数,且其length属性会随着数组成员的增减而发生变化,同时又从Array构造函数中继承了一些用于进行数组操作的方法.而对于一个 ...
最新文章
- gamma分布_轻松理解gamma分布
- [MicroPython]TurnipBit开发板旋转按钮控制直流电机转速
- (十)HTTP协议【前后端分离的时代,网络请求是前端的生命线】
- w3c html5 客户端缓存数据格式,Html5应用程序缓存(Cache manifest)
- Postman|Qt笔记-解决Could not get any response
- Sublime Text 2插件安装及快捷键介绍
- android libbfaac.so,Android中Json数据读取与创建
- 个人简介页面如何设计?优秀案例给你灵感
- [emacs] Python代码补全的各种方法介绍以及对比
- 第15届Pwn2Own大赛确定目标和奖金
- 使用Java复制文件并在控制台显示文件进度
- PHP语言对用户输入的身份证信息进行实名认证(阿里云身份证实名认证接口API)
- 腾讯云Ubuntu18.04配置OpenPCDet深度学习环境
- 2015年度个人总结(公司版)
- DAT NAT SAN FCoE
- python正常血压最长小时数_一套完整的机器学习的操作步骤:XGBoost实例-从血压,年龄等因子判断是否肾不好-Python...
- 夏曹俊FFmpeg 4.3 音视频基础到工程应用
- Win10配置环境变量path详解
- javah提示找不到类文件
- 永磁同步电机和永磁异步电机,以及BLDC和PMSM电机的区别?
热门文章
- c语言关于内存编程,c语言内存
- vue .native 方法未定义_技术分享谈谈Vue的响应式原理
- java text 格式化_java.text.Format
- zabbix监控mysql集群_zabbix监控elasticsearch集群
- chrome网页自动化插件_Automation | 让网页在 Safari 和 Chrome 之间穿梭
- java if else重构_Java编程细节-重构-为什么 if-else 不是好代码
- 行政管理专业考计算机研究生分数,行政管理学,考研,历年分数线是多少?
- nvm简介与常见命令
- 智联招聘基于Apache Pulsar打造企业级事件中心
- Paper Read: Robust Deep Multi-modal Learning Based on Gated Information Fusion Network