21.12.15 学习总结

周一周二把栈,队列,链表看了半天,今天想办法写了两个题目(链表还在学)

21.12.15 学习总结

 ps:每组数据后有一个空行。(难怪交7次都是格式错误)

借鉴了别人的博客,结果找不到网址了

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<time.h>
typedef struct asw{
	int a[101];
	int op;
	int ed;
}asd;
void start(asd *q){
	q->op=0;q->ed=0;
}
void add(asd *q,int e){
	q->a[q->ed++]=e;
}
void insallhead(asd *q){
	if(q->op==q->ed)printf("this is empty!\n");
	else printf("%d\n",q->a[q->op++]);
}
void stop(asd *q){
	while(q->op!=q->ed)printf("%d\n",q->a[q->op++]);
}
int main()
{
	asd *q=(asd*)malloc(sizeof(asd));
	int t;
	while(scanf("%d",&t)!=EOF){
		start(q);
		while(t--){
			char x[15];
			int e;
			getchar();
			scanf("%s",x);
			if(strcmp(x, "enqueue") == 0) {
				scanf("%d", &e);
				add(q, e);
			}
			
			if(strcmp(x, "dequeue") == 0) {
				insallhead(q);
			}
			
			if(strcmp(x, "query") == 0) {
				if(q->op == q->ed)
					printf("this is empty!\n");
				else
					stop(q);
			}
		}
		printf("\n");//每组数据后跟一个空行,吐了
	}
    return 0;
}

21.12.15 学习总结

 ps:只要出现一次空栈后pop就在数据结束后输出error,有且仅输出一次

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<malloc.h>
int dl1=0,z1=0;
typedef struct asw{
	int num[1001];
	int op,ed;
}duilie;//队列:dl
typedef struct asd{
	int num[1001];
	int tipid;
}zhan;//栈:z
void opendl(duilie *dl){//初始化
	dl->op=dl->ed=0;
}
void openz(zhan *z){
	z->tipid=0;
}
void adddl(duilie *dl,int e){//push
	dl->num[dl->ed++]=e;
}
void addz(zhan *z,int e){
	z->num[z->tipid++]=e;
}
void zyydl(duilie *dl){//pop
	if(dl->op>=dl->ed)dl1=1;
	else if(dl->op<dl->ed)dl->op++;
}
void zyyz(zhan *z){//最后输出
	if(z->tipid<=0)z1=1;
	else if(z->tipid>0)z->tipid--;
}
void putsdl(duilie *dl){
	if(dl1==1)printf("error\n");
	else{
		for(int i=dl->op;i<dl->ed;i++)printf("%d ",dl->num[i]);
		printf("\n");
	}
}
void putsz(zhan *z){
	if(z1==1)printf("error\n");
	else {
		for(int i=0;i<z->tipid;i++)printf("%d ",z->num[i]);
		printf("\n");
	}
}
int main(){
	int m;
	scanf("%d",&m);
	for(int ii=0;ii<m;ii++){
		int n;
		dl1=0;z1=0;
		scanf("%d",&n);
		duilie *dl=(duilie*)malloc(sizeof(duilie));
		zhan *z=(zhan*)malloc(sizeof(duilie));
		opendl(dl);openz(z);
		for(int i=0;i<n;i++){
			getchar();
			char xx[100];
			scanf("%s",xx);
			if(strcmp(xx,"push")==0){
				int e;
				scanf("%d",&e);
				adddl(dl,e);
				addz(z,e);
			}
			else if(strcmp(xx,"pop")==0){
				zyydl(dl);zyyz(z);
			}
		}
		putsdl(dl);putsz(z);
	}
    return 0;
}

(我怎么用的都是结构体数组?)

上一篇:2019-03 CFF-CSP 二十四点 C和C++混写


下一篇:(DFS)冲突