B. 顺序表操作

该代码示例展示了如何在C++中实现顺序表的定义、创建、插入和查找操作。顺序表通过动态数组实现,包括插入新元素时的数组扩容以及按位置查找元素的功能。代码包括了主函数中的多个测试实例,用于测试顺序表的各种操作。
摘要由CSDN通过智能技术生成

题目描述

给出顺序表的初始数据,实现顺序表的定义、创建、插入与查找操作

--算法说明--

顺序表:一维数据数组、最大长度、实际长度

插入操作:将位置i和后面的数据全部后移一位,在指定位置i插入一个数据,实际长度加1

--程序要求--

若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio

程序中若include多过一个头文件,不看代码,作0分处理

不允许使用第三方对象或函数实现本题的要求

输入

第一行输入t表示有t个测试实例

每个测试实例包含3行输入:

第1行:数字n表示数据的数目,后跟n个数据,所有数据之间用单个空格隔开

第2行:插入新数据位置(从0开始)、新数据

第3行:要查找的数据

输出

每个测试实例输出两行

第1行输出插入数据后的结果,数据之间用单个空格隔开,最后一个数据后面无空格

第2行输出要查找的数据的位置(从0开始),若数据不存在,则输出ERROR

输入样例

3
5 11 22 33 44 55
1 77
22
4 99 88 77 66
4 55
33
6 1 2 3 4 5 6
0 9
5

输出样例

11 77 22 33 44 55
2
99 88 77 66 55
ERROR
9 1 2 3 4 5 6
5
 

代码如下

	#include <iostream>
	
	using namespace std;
	class Table{
	public:
	    int length;                 //顺序表长度
	    int *elem;                  //顺序表数组
	    int listsize;          //顺序表所开的数组的实际长度
	public:
	    Table(){
	        cin>>length;
	        listsize=100;
	        elem = new int[listsize];
	        for(int i = 1; i< length+1; i++)    
	            cin>>elem[i];
	    }
	    ~Table(){};
	    void PrintTable(){
	    	//cout<<length<<' ';
	    	for(int i = 1; i< length; i++)
	            cout<<elem[i]<<' ';
	    	cout<<elem[length]<<endl;
		}
	    bool Insert(int loc,int temp_elem){
	    	if(loc <= 0 || loc>length+1)
	        return false;
	    	length++;
	    	if(length>listsize){
	        	listsize=2*listsize;
	        	int *new_elme = new int [listsize];
	        	for(int i = 0; i < length+1; i++)
	            	new_elme[i] = elem[i];
	        	delete[] elem;
	        	elem = new_elme;
	    	}
	    	for(int i = length; i > loc; i--)   
	        	elem[i]=elem[i-1];
	    	elem[loc]=temp_elem;
	   		return true;
	    	
		}
	
	    int Search(int key){
	    	int i;
			if(length==0)
	        	cout<<"ERROR"<<endl;
	    	elem[0]=key;
	    	for(i = length; i >= 0; i--)
	        	if(elem[i] == elem[0])
	            	break;
	    	if(i==0)
	        	cout<<"ERROR"<<endl;
	    	else
	        	cout<<i-1<<endl;
		}
	
	};
	
	int main()
	{
	    
	    int t;
	    cin>>t;
	    while(t--){
	        Table test;
	        
	        int loc,data,key;
	 
	        cin>>loc>>data;
	        if(test.Insert(loc+1,data))
	            test.PrintTable();
	        else
	            cout<<"ERROR"<<endl;
	 
	     
	 
	        cin>>key;
	        test.Search(key);
	        	
	        
	    }
	    return 0;
	}

 

写这篇是为了给我舍友一个大逼兜,借鉴的同学记得改一下变量名什么的 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值