ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【C++】实验二:顺序表

2019-09-07 16:43:52  阅读:200  来源: 互联网

标签:顺序 cout int Type C++ 实验 max data size


【C++】实验系列主要是为了总结代码和知识点,方便复习。
以下代码都是自己敲出来的,在VS上可以运行。

细节: /*********************************************/
// 第二次实验 顺序表.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。

#include "pch.h"
#include <iostream>
using namespace std;
typedef int Type;

class SeqList {
	typedef int Type;
private:
	Type *data;
	int size;
	int max;
public:
	SeqList() {
		data = new Type[1000];
		size = 0;
		max = 1000;
	}
	SeqList(int n) {
		data = new Type[n];
		size = 0;
		max = 1000;
	}
	~SeqList(){}
	//尾插
	void InsertRear(Type item) {
		if (size >= max)
		{
			cout << "allocation is full";
			return ; 
		}
		data[size] = item;
		size++;
	}
	//定点插入
	void Insert(int m,Type item) {
		int i;
		if (size >= max)
		{
			cout << "allocation is full";
			return;
		}
		for (i = size; i>m; i--)
			data[i] = data[i-1];
		data[m] = item;
		size++;
	}
	//定点删除
	void Erase(int id) {
		int i;
		for (i = id; i < size; i++)
		{
			data[i] = data[i + 1];
		}
		size--;
		//Type为字符串可使data[size]='\0',但Type怎么办?
		//答:将size--后虽然数据还在但不影响,其实data[n]都是数据,只是是随机数而已
		/*********************************************/
	}
	//清表
	void Clear() {
         size = 0;
	}
	/*********************************************/
	/*清表 size = 0即可
	**销毁:delete []data;
	**     data=NULL;
	**     size = 0;
    **     max = 0;
	
    */
	
	 //取值
	Type Getdata(int id){
		return data[id - 1];
	}
	//取size
	int Size()const {
		return size;
	}
	// 判空
	int Empty(){
		return size == 0 ? true : false;
	}
   //判满
	int Full() {
		return size == max ? true : false;
	}
	void displayall() {
		int i;
		for (i = 0; i < size; i++)
		{
			cout << i << ":  " << data[i]<<endl;
		}
		cout << endl;
	}
	SeqList operator=(SeqList SeqA) {
		int i;
		SeqList SeqB;
		for (i = 0; i < size; i++)
			SeqB.data[i] = data[i];
		SeqB.size = size;
		SeqB.max = max;
		return SeqB;
	}
	SeqList operator+(SeqList SeqA) {
		int i;
		SeqList SeqB;
		if (size + SeqA.size > 1000)//判断size是否够/*********************************************/
		{
			SeqList SeqB(size + SeqA.size);
		}
		else
			SeqList SeqB;
		SeqB = *this;
		for (i = 0; i < SeqA.size; i++)
			SeqB.data[i + size] = SeqA.data[i];
		SeqB.size = size + SeqA.size;
	}
};
int main()
{
	int n, size;
    cout << "Hello World!\n"; 
	SeqList SeqA;
	SeqA.InsertRear(1); SeqA.displayall();
	SeqA.InsertRear(2); SeqA.displayall();
	SeqA.InsertRear(3); SeqA.displayall();
	
	SeqA.Insert(1, 7);  SeqA.displayall();
	SeqA.Erase(1);      SeqA.displayall();
	size = SeqA.Size();
	cout << "数据个数:" << size << endl
		<< "请输入0-" <<size-1<< "以内的数:" << endl;
	cin >> n;
	while (n < 0 || n >= size) 
	{
		cout << "请重新输入:" << endl;
		cin >> n;
	}
	cout << "第" << n+1 <<"个数据是:"<< SeqA.Getdata(n) << endl;
	
	cout << SeqA.Full() << endl;
	cout << SeqA.Empty() << endl;
	SeqA.Clear();
	return 0;
}

标签:顺序,cout,int,Type,C++,实验,max,data,size
来源: https://blog.csdn.net/qq_43724601/article/details/100600907

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有