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
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