怎么做百度联盟网站,前端面试题,物流企业网站建设特色,中国知名网站排名题目描述 对于包含n#xff08;1n1000#xff09;个整数的序列#xff0c;对于序列中的每一元素#xff0c;在序列中查找其位置之后第一个大于它的值#xff0c;如果找到#xff0c;输出所找到的值#xff0c;否则#xff0c;输出-1。 输入 输入有多组#xf…题目描述 对于包含n1n1000个整数的序列对于序列中的每一元素在序列中查找其位置之后第一个大于它的值如果找到输出所找到的值否则输出-1。 输入 输入有多组第一行输入t1t10表示输入的组数 以后是 t 组输入每组先输入n表示本组序列的元素个数之后依次输入本组的n个元素。 输出 输出有多组每组之间输出一个空行最后一组之后没有 每组输出按照本序列元素的顺序依次逐行输出当前元素及其查找结果两者之间以--间隔。 示例输入 2 4 12 20 15 18 5 20 15 25 30 6 示例输出 12--20 20---1 15--18 18---1 20--25 15--25 25--30 30---1 6---1 #include stdio.h
#includestdlib.h
#include malloc.h
#define STACKSIZE 100100
struct node
{int data;int next;int id;//位置的标记
}a[100100];
typedef struct
{node *top,*base;int stacksize;
}Stack;void initial(Stack s)// 构造一个空栈S{s.base(node*)malloc(sizeof(node)*STACKSIZE);if(!s.base) exit(-1);存储分配失败s.tops.base;s.stacksizeSTACKSIZE;
}
int Empty(Stack s)//若栈为空栈则返回1否则 返回0;
{if(s.bases.top){return 1;}return 0;
}
void clean(Stack s) // 重置S为空栈{s.tops.base;
}
void pop(Stack s,node e) //若栈不空则删除S的栈顶元素并//用e返回其值
{if (!Empty(s)){s.top--;e*s.top;}
}
void gettop(Stack s,node e)//用e返回S的栈顶元素
{e*(s.top-1);
}
void push(Stack s,node e) // 插入元素e为新的栈顶元素
{*s.tope;s.top;
}
int main()
{int t,n;Stack s;//栈的定义initial(s);//栈的初始化while(scanf(%d,t)!EOF){while(t--){clean(s);//清空栈scanf(%d,n);for(int j1;jn;j){scanf(%d,a[j].data);a[j].idj;//标记读入的位置a[j].next-1;//标记后一个数是-1if(Empty(s))push(s,a[j]);else{while(!Empty(s)){node e;gettop(s,e);//获得栈顶元素int ke.id;if(e.dataa[j].data)//数据比较{a[k].nexta[j].data;pop(s,e);//比较完出栈}elsebreak;}push(s,a[j]);//将下一个数进栈重复操作}}for(int i1;in;i){printf(%d--%d\n,a[i].data,a[i].next);}if(t!0)printf(\n);}}return 0;
}