zoukankan      html  css  js  c++  java
  • 简单顺序表

    //线性表
    //由同类型的数据元素构成的有序序列的线性结构
    //线性表中没有元素的时候称为空表
    //表起始位置称为表头,表结束的位置称为表尾
    
    # include <iostream>
    using namespace std;
    
    class  SubsequenceList
    {
    	private:
    		int* pData;//指向顺序表 
    		int	 tail;//指向当前的最后一个元素的后面的下标 
    		int maxSize;//最大长度 
    		
    	public:
    		SubsequenceList(int maxSize)
    		{
    			this->maxSize=maxSize;
    			pData=new int[maxSize];
    			tail=0;
    		}
    		
    		~SubsequenceList()
    		{
    			delete [] pData;
    			tail=0;
    		}
    		
    		void showList();//显示整个顺序表 
    		bool insertIntoList(int element,int index);//在指定的下标来插入元素 
    		bool deleteElementByIndex(int index);//通过下标来删除元素
    		int  findElementByIndex(int index);//通过下标查找元素
    		bool updataElementByIndex(int index,int element);//根据下标来更新内容 
    		int getTail();//返回目前的尾部
    		int findElementByContent(int element);//通过元素的内容来查找元素 
    		
    };
    bool SubsequenceList::insertIntoList(int element,int index)//插入元素 
    {
    		if(index>this->tail+1)//在超过当前最大长度的时候,插入失败 
    		{
    			return false;
    		}
    		else
    		{
    			if(index==this->tail)//如果要插在顺序表的最后一个元素的后一个元素 
    			{
    				 this->pData[index]=element;
    				 this->tail++;//尾部下标后移
    				 return true;//插入成功 
    			}
    			else//插入的下标位于中间部分 
    			{
    				for(int i=this->tail;i>index;i--)//依次向后移动位置 
    				{
    					this->pData[i]=this->pData[i-1]; 
    				}
    				
    				this->pData[index]=element;//插入元素
    				this->tail++;//指向最后元素的下标向后移动
    				return true; 
    			}
    		}
    }
    
    int SubsequenceList::getTail() //返回当前的尾部 
    {
    	return this->tail;
    } 
    
    void SubsequenceList::showList()//显示整个顺序表 
    {
    	//依次打印出所有的内容 
    	for(int i=0;i<this->tail;i++)
    	{
    		cout<<this->pData[i]<<' ';
    	}
    	cout<<endl;
    }
    
    bool SubsequenceList::deleteElementByIndex(int index)//按照下标来删除元素 
    {
    	if(index>=this->tail||index<0)//如果要删除不在该顺序表中的元素
    	{
    		return false;//删除失败	
    	} 
    	else
    	{
    		for(int i=index;i<this->tail;i++)
    		{
    			this->pData[i]=this->pData[i+1];
    		}
    		//移动来删除要删除的位置
    		this->tail--;//长度减少 
    		return true;//删除成功 
    		 
    	}
    } 
    
    
    int SubsequenceList::findElementByIndex(int index)//根据下标查找元素
    {
    	if(index<0||index>=this->tail)//如果不在范围 
    	{
    		return -1;//返回-1,查找失败 
    	}
    	else
    	{
    		return this->pData[index];//返回效果 
    	}
    } 
    
    
    bool SubsequenceList::updataElementByIndex(int index,int element)//根据下标来更新数据 
    {
    	if(index<0||index>=this->tail)//不在范围的话,无法更新失败 
    	{
    		return false;
    	}
    	else
    	{
    		this->pData[index=element];
    		return true;
    	}
    }
    
    int SubsequenceList::findElementByContent(int element)//根据内容查找对应的信息 
    {
    	bool isFind=false;//是否找到的标志 
    	int index=-1;//找到的下标 
    	for(int i=0;i<this->tail;i++)
    	{
    		if(this->pData[i]==element)//找到了 
    		{
    			isFind=true;
    			index=i;
    			break;
    		}
    	}
    	if(isFind)
    	{
    		return index;
    	}
    	else
    	{
    		return index;
    	}
    }
    
    int main(void)//测试类 
    {
    	SubsequenceList* s=new SubsequenceList(100);
    	s->insertIntoList(1,0);
    	s->insertIntoList(2,1);
    	s->insertIntoList(3,2);
    
    	s->insertIntoList(6,1);
    	s->deleteElementByIndex(0); 
    	s->showList();
    	return 0;
    }
    
    
    
     
    

      

  • 相关阅读:
    【DL-2-2】卷积神经网络(CNN)--AlexNet、ZFNet、VGGNet、GoogleNet、ResNet
    Python3 错误和异常-(try/except/else/finally/raise/assert)
    生成器 Generators
    Map,Filter 和 Reduce
    装饰器
    目标检测:介绍及传统方法
    【ML-17-2】MCMC--马尔可夫蒙特卡罗方法(MH和Gibbs)
    如何在JDK1.8中愉快地处理日期和时间
    luogu1447 能量采集
    luogu1775 古代人的难题 打表找规律
  • 原文地址:https://www.cnblogs.com/mengxiaoleng/p/11180787.html
Copyright © 2011-2022 走看看