问题标题: XA Data Structure Simulator 1.0发布贴

0
0
已解决
兴安科技开发组官方
兴安科技开发组官方
初级守护
初级守护

由于代码较短,所以数据维护方式自行探索,最先总结出来的奖励这些酷町豆!

#include<iostream>
#include<deque>
#include<cstring>
#include<stdio.h>
#include<windows.h>
using namespace std;
deque<long long> a[20];
int i,j,cx1,cx2,cx3;
string cmmd,notice;
void color(int corcorcor){
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),corcorcor);
}
void console(){
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);  
    CONSOLE_SCREEN_BUFFER_INFO bInfo; 
    GetConsoleScreenBufferInfo(hOut, &bInfo );  
    SetConsoleTitle("XA Data Structure Simulator"); // 设置窗口的标题
}
void line(string str){
    int i,l,w;
    w=80;
    l=str.length();
    for(i=0;i<(w-l)/2;i++)
    cout<<" ";
    cout<<str;
    return ;
}
void ser(int com,int l){
	notice="none";
	while(cmmd!="exit"){
		system("cls");
		color(14);
		line("XA Data Structure Simulator 1.0");
		cout<<endl;
		for(i=0;i<a[com].size();i++){
			color(11);
			cout<<i;
			color(7);
			cout<<" "<<a[com][i]<<endl;
		}
		if(notice!="none"){
			color(12);
			cout<<notice<<endl;
			notice="none";
		}
		color(10);
		cout<<"输入维护命令:";
		color(7);
		cin>>cmmd;
		if(l==1){//vector
			if(cmmd=="push"){
				color(13);
				cout<<"push [number1]"<<endl;
				color(7);
				cout<<"number1=";
				cin>>cx1;
				a[com].push_back(cx1);
			}
			else if(cmmd=="pop"){
				if(a[com].empty()){
					notice="警告:vector为空";
				}
				else a[com].pop_back();
			}
			else if(cmmd=="append"){
				color(13);
				cout<<"append [subscript1] [number1]"<<endl;
				color(7);
				cout<<"subscript1=";
				cin>>cx1;
				cout<<"number1=";
				cin>>cx2;
				a[com][cx1]=cx2;
			}
			else if(cmmd=="clear"){
				a[com].clear();
			}else notice="警告:'"+cmmd+"'不是XA Data Structure Simulator 1.0的维护命令";
		}
		if(l==2){//queue
			if(cmmd=="push"){
				color(13);
				cout<<"push [number1]"<<endl;
				color(7);
				cout<<"number1=";
				cin>>cx1;
				a[com].push_back(cx1);
			}
			else if(cmmd=="pop"){
				if(a[com].empty()){
					notice="警告:queue为空";
				}
				else a[com].pop_front();
			}
			else if(cmmd=="append"){
				notice="警告:queue不可以访问数组下标";
			}
			else if(cmmd=="clear"){
				a[com].clear();
			}else notice="警告:'"+cmmd+"'不是XA Data Structure Simulator 1.0的维护命令";
		}
		if(l==3){//deque
			if(cmmd=="push_front"){
				color(13);
				cout<<"push_front [number1]"<<endl;
				color(7);
				cout<<"number1=";
				cin>>cx1;
				a[com].push_front(cx1);
			}
			else if(cmmd=="push_back"){
				color(13);
				cout<<"push_back [number1]"<<endl;
				color(7);
				cout<<"number1=";
				cin>>cx1;
				a[com].push_back(cx1);
			}
			else if(cmmd=="pop_front"){
				if(a[com].empty()){
					notice="警告:deque为空";
				}
				else a[com].pop_front();
			}
			else if(cmmd=="pop_back"){
				if(a[com].empty()){
					notice="警告:deque为空";
				}
				else a[com].pop_back();
			}
			else if(cmmd=="append"){
				color(13);
				cout<<"append [subscript1] [number1]"<<endl;
				color(7);
				cout<<"subscript1=";
				cin>>cx1;
				cout<<"number1=";
				cin>>cx2;
				a[com][cx1]=cx2;
			}
			else if(cmmd=="clear"){
				a[com].clear();
			}
			else if(cmmd=="push"){
				notice="警告:由于deque具备双端性,所以请指明插入位置";
			}
			else if(cmmd=="pop"){
				notice="警告:由于deque具备双端性,所以请指明删除位置";
			}else notice="警告:'"+cmmd+"'不是XA Data Structure Simulator 1.0的维护命令";
		}
		if(l==4){//stack
			if(cmmd=="push"){
				color(13);
				cout<<"push [number1]"<<endl;
				color(7);
				cout<<"number1=";
				cin>>cx1;
				a[com].push_back(cx1);
			}
			else if(cmmd=="pop"){
				if(a[com].empty()){
					notice="警告:stack为空";
				}
				else a[com].pop_back();
			}
			else if(cmmd=="append"){
				notice="警告:stack不可以访问数组下标";
			}
			else if(cmmd=="clear"){
				notice="警告:stack不可以被清空";
			}else notice="警告:'"+cmmd+"'不是XA Data Structure Simulator 1.0的维护命令";
		}	
	}
	return ;
}
int main(){
	console();
	while(cx3!=5){
		system("cls");
		color(14);
		line("XA Data Structure Simulator 1.0");
		cout<<endl;
		color(10);
		cout<<"输入您想维护的数据结构:"<<endl;
		color(7);
		cout<<"1-vector"<<endl;
		cout<<"2-queue"<<endl;
		cout<<"3-deque"<<endl;
		cout<<"4-stack"<<endl;
		cout<<"5-退出"<<endl; 
		cin>>cx3;
		cmmd="";
		if(cx3<5 && cx3>0)ser(1,cx3);
	}
	
	return 0;
}

 

兴安科技开发组官方在2021-05-02 08:41:48追加了内容

数据结构提示:

vector 动态数组

queue 队列

deque 双端队列

stack 栈


0
1
0
黄硕梁
黄硕梁
初级天翼
初级天翼

ADSFDFAWEQFVAWCSVSDVADV

您的电脑已被病毒入侵

0
0
0
曹灿阳
曹灿阳
初级天翼
初级天翼

我给你列一下你们可以自行实现的数据结构:

1. 链表(用指针实现)

2. 哈希表(多思考一下)

3. 队列(注意要将数组定义成逻辑循环的,否则会存在假溢出的情况)

4. 栈(应该很简单吧……)

5. 树(多多思考)

6. 二叉树(可以增加一些功能)

7. deque(我不知道这是什么,你们上网查)

8. vector(我不知道这是什么,你们上网查)

9. 图(多多思考,可以增加一些算法模板)

曹灿阳在2021-05-01 22:02:02追加了内容

堆可以尝试一下(内部是二叉树形的,需要不断调整,最后top()返回的是最大值——根)

曹灿阳在2021-05-03 09:10:25追加了内容

还有一个:

10. 并查集(老师上课讲了)

0
0
陈家傲
陈家傲
新手光能
新手光能

本菜鸟根本不知道怎么用......

我要回答