每日总结 12.28

今天对栈 队列 链表进行重温加固

首先是数组模拟栈

                                             验证栈序列

题目描述

给出两个序列 pushed 和 poped 两个序列,其取值从 1 到 n(n\le100000)n(n≤100000)。已知入栈序列是 pushed,如果出栈序列有可能是 poped,则输出 Yes,否则输出 No。为了防止骗分,每个测试点有多组数据。

输入格式

第一行一个整数 qq,询问次数。

接下来 qq 个询问,对于每个询问:

第一行一个整数 nn 表示序列长度;

第二行 nn 个整数表示入栈序列;

第三行 nn 个整数表示出栈序列;

输出格式

对于每个询问输出答案。

输入输出样例

输入 #1复制

2
5
1 2 3 4 5
5 4 3 2 1
4
1 2 3 4
2 4 1 3

输出 #1复制

Yes
No

栈的基本操作主要有:栈的初始化、判空、判满、取栈顶元素、在栈顶进行插入和删除。在栈顶插入元素称为入栈,在栈顶删除元素称为出栈。根据这些来对该题进行解决。 

#include<stdio.h>
int main()
{
	int push[100000],pop[100000],s[100000];
	int q,flag,a,b,c;
	scanf("%d",&q);
	for(int i=1;i<=q;i++)
	{
		int n;
		scanf("%d",&n);
		for(int j=0;j<n;j++)
		{
			scanf("%d",&push[j]);
		}
		for(int j=0;j<n;j++)
		{
			scanf("%d",&pop[j]);
		}
		flag=1;
		a=b=c=0;
		while(a<n)
		{
			s[b]=push[c];
			while(s[b]==pop[a]&&a!=n&&b>=0)
			{
				--b;
				++a;
			}
			++b;
			++c;
			if(c==n&&a!=n)
			{
				flag=0;
				break;
			}
		}
		if(flag==1)
		{
			printf("Yes\n");
		}
		else
		{
			printf("No\n");
		}
	}
	return 0;
}

 以下是对于队列原理的进行刨析

#include<stdio.h>
int main()
{
	int q[102]={0,6,3,1,7,5,8,9,2,4},head,tail;
	//初始化队列
	head=1;
	tail=10;
	while(head<tail)//当队列不为空的时候执行循环
	{
		//打印队首并将队首出队
		printf("%d ",q[head]);
		head++;
		//先将新队首的数添加到队尾
		q[tail]=q[head];
		tail++;
		//再将队首出队
		head++;
		
	}
	getchar();
	getchar();
	return 0;
}

以下是加上结构体的队列,就有了广度搜索的雏形 

#include<stdio.h>
struct queue
{
	int data[100];
	int head;
	int tail;
};
int main()
{
	struct queue q;
	int i;
	q.head=1;
	q.tail=1;
	for(i=1;i<=9;i++)
	{
		scanf("%d",&q.data[q.tail]);
		q.tail++;
	}
	while(q.head<q.tail)
	{
		printf("%d ",q.data[q.head]);
		q.head++;
		q.data[q.tail]=q.data[q.head];
		q.tail++;
		q.head++;
	}
	getchar();
	getchar();
	return 0;
}

接下来是一个比较基础的队列题目

                                   小猫钓鱼 (纸牌游戏)

代码实现

#include<stdio.h>
struct queue
{
	int data[1000];
	int tail;
	int head;
};
struct stack
{
	int data[10];
	int top;
};
int main()
{
	struct queue q1,q2;
	struct stack s;
	int book[10];
	int i,t,lun=0;
	q1.head=1;q1.tail=1;
	q2.head=1;q2.tail=1;
	s.top=0;
	for(i=1;i<=9;i++)
	{
		book[i]=0;
	}
	for(i=1;i<=6;i++)
	{
		scanf("%d",&q1.data[q1.tail]);
		q1.tail++;
	}
	for(i=1;i<=6;i++)
	{
		scanf("%d",&q2.data[q2.tail]);
		q2.tail++;
	}
	while(q1.head<q1.tail&&q2.head<q2.tail)
	{
		t=q1.data[q1.head];
		if(book[t]==0)
		{
			q1.head++;
			book[t]=1;
			s.top++;
			s.data[s.top]=t;
		}
		else
		{
			q1.head++;
			q1.data[q1.tail]=t;
			q1.tail++;
			while(s.data[s.top]!=t)
			{
				book[s.data[s.top]]=0;
				q1.data[q1.tail]=s.data[s.top];
				q1.tail++;
				s.top--;
			}
		}
		t=q2.data[q2.head];
		if(book[t]==0)
		{
			q2.head++;
			book[t]=1;
			s.top++;
			s.data[s.top]=t;
		}
		else
		{
			q2.head++;
			q2.data[q2.tail]=t;
			q2.tail++;
			while(s.data[s.top]!=t)
			{
				book[s.data[s.top]]=0;
				q2.data[q2.tail]=s.data[s.top];
				q2.tail++;
				s.top--;
			}
		}
		lun++;
	}
	
	if(q2.head==q2.tail)
	{
		printf("dcy,win!\n");
		printf("dcy当前手上的牌是:");
		for(i=q1.head;i<q1.tail;i++)
		{
			printf(" %d",q1.data[i]);
		}
		if(s.top>0)
		{
			printf("\n桌上的牌是:");
			for(i=1;i<=s.top;i++)
			{
				printf(" %d",s.data[i]);
			}
		}
		else
		{
			printf("\n桌子上没有牌了");
		}
	}
	else
	{
		printf("dyy,win!\n");
		printf("dyy当前手上的牌是:");
		for(i=q2.head;i<q2.tail;i++)
		{
			printf(" %d",q2.data[i]);
		}
		if(s.top>0)
		{
			printf("\n桌上的牌是:");
			for(i=1;i<=s.top;i++)
			{
				printf(" %d",s.data[i]);
			}
		}
		else
		{
			printf("\n桌子上没有牌了");
		}
	}
	printf("%d",lun);
	getchar();
	getchar();
	return 0;
}

该程序使用队列来实现玩家的手中的牌(玩家的牌只能前面出牌,赢得牌依次放后面),用栈实现桌子上的牌(出牌放在末端,赢牌也是从末端拿走)。

通过对栈,队列的重温,对于深度搜索有了进一步的理解 

表格数据内容: 文物采样点 二氧化硅(SiO2) 氧化钠(Na2O) 氧化钾(K2O) 氧化钙(CaO) 氧化镁(MgO) 氧化铝(Al2O3) 氧化铁(Fe2O3) 氧化铜(CuO) 氧化铅(PbO) 氧化钡(BaO) 五氧化二磷(P2O5) 二氧化硫(SO2) 比例累加 类型 01 69.33 2.86 9.99 6.32 0.87 3.93 1.74 3.87 0.35 1.38 1.17 0.39 97.61 高钾 02 36.28 2.685 1.05 2.34 1.18 5.73 1.86 0.26 47.43 9.11 3.57 3.66 99.89 铅钡 03部位1 87.05 2.86 5.19 2.01 1.165 4.06 1.12 0.78 0.25 1.38 0.66 0.39 100 高钾 03部位2 61.71 2.86 12.37 5.87 1.11 5.5 2.16 5.09 1.41 2.86 0.7 0.39 98.88 高钾 04 65.88 2.86 9.67 7.12 1.56 6.44 2.06 2.18 0.35 1.38 0.79 0.36 96.06 高钾 05 61.58 2.86 10.95 7.35 1.77 7.5 2.62 3.27 0.35 1.38 0.94 0.47 96.51 高钾 06部位1 67.65 2.86 7.37 5.06 1.98 11.15 2.39 2.51 0.2 1.38 4.18 0.39 98.92 高钾 06部位2 59.81 2.86 7.68 5.41 1.73 10.05 6.04 2.18 0.35 0.97 4.5 0.39 98.84 高钾 07 92.63 2.86 9.42 1.07 1.165 1.98 0.17 3.24 0.35 1.38 0.61 0.39 99.7 高钾 08 20.14 2.685 0.275 1.48 1 1.34 1 10.41 28.68 31.23 3.59 2.58 99.82 铅钡 08严重风化点 4.61 2.685 0.275 3.19 1 1.11 1 3.14 32.45 30.62 7.56 15.03 98.24 铅钡 09 95.02 2.86 0.59 0.62 1.165 1.32 0.32 1.55 0.35 1.38 0.35 0.39 99.77 高钾 10 96.77 2.86 0.92 0.21 1.165 0.81 0.26 0.84 0.35 1.38 0.745 0.39 99.81 高钾 11 33.59 2.685 0.21 3.51 0.71 2.69 1 4.93 25.39 14.61 9.38 3.66 95.39 铅钡 12 94.29 2.86 1.01 0.72 1.165 1.46 0.29 1.65 0.35 1.38 0.15 0.39 99.57 高钾 13 59.01 2.86 12.53 8.7 1.165 6.16 2.88 4.73 0.35 1.38 1.27 0.39 98.14 高钾 14 62.47 3.38 12.28 8.23 0.66 9.23 0.5 0.47 1.62 1.38 0.16 0.39 99 高钾 16 65.18 2.1 14.52 8.27 0.52 6.18 0.42 1.07 0.11 0 0.745 0.39 98.41 高钾 18 79.46 2.86 9.42 5.06 1.53 3.05 1.12 2.18 0.35 1.38 1.36 0.39 97.25 高钾 19 29.64 2.685 0.275 2.93 0.59 3.57 1.33 3.51 42.82 5.35 8.83 3.66 98.76 铅钡 20 37.36 2.685 0.71 1.87 1 5.45 1.51 4.78 9.3 23.55 5.75 3.66 88.41 铅钡 21 76.68 2.86 9.42 4.71 1.22 6.19 2.37 3.28 1 1.97 1.1 0.39 98.52 高钾 22 92.35 2.86 0.74 1.66 0.64 3.5 0.35 0.55 0.35 1.38 0.21 0.39 100 高钾 23未风化点 53.79 7.92 0.275 0.5 0.71 1.42 1 2.99 16.98 11.86 2.54 3.66 96.5 铅钡 24 31.94 2.685 0.275 0.47 1 1.59 1 8.46 29.14 26.23 0.14 3.66 98.88 铅钡 25未风化点 50.61 2.31 0.275 0.63 1 1.9 1.55 1.12 31.9 6.65 0.19 3.66 97.06 铅钡 26 19.79 2.685 0.275 1.44 1 0.7 1 10.57 29.53 32.25 3.13 1.96 99.82 铅钡 26严重风化点 3.72 2.685 0.4 3.01 1 1.18 1 3.6 29.92 35.45 6.04 15.95 99.89 铅钡 27 92.72 2.86 9.42 0.94 0.54 2.51 0.2 1.54 0.35 1.38 0.36 0.39 98.81 高钾 28未风化点 68.08 2.685 0.26 1.34 1 4.7 0.41 0.33 17.14 4.04 1.04 3.66 98.69 铅钡 29未风化点 63.3 0.92 0.3 2.98 1.49 14.34 0.81 0.74 12.31 2.03 0.41 3.66 99.88 铅钡 30部位1 34.34 2.685 1.41 4.49 0.98 4.35 2.12 0.86 39.22 10.29 2.54 3.66 97.95 铅钡 30部位2 36.93 2.685 0.275 4.24 0.51 3.86 2.74 0.86 37.74 10.35 1.41 3.66 98.7 铅钡 31 65.91 2.685 0.275 1.6 0.89 3.11 4.59 0.44 16.55 3.42 1.62 3.66 98.43 铅钡 32 69.71 2.685 0.21 0.46 1 2.36 1 0.11 19.76 4.88 0.17 3.66 98.66 铅钡 33 75.51 2.685 0.15 0.64 1 2.35 1 0.47 16.16 3.55 0.13 3.66 99.96 铅钡 34 35.78 2.685 0.25 0.78 1 1.62 0.47 1.51 46.55 10 0.34 3.66 97.52 铅钡 35 65.91 2.685 0.275 0.38 1 1.44 0.17 0.16 22.05 5.68 0.42 3.66 96.21 铅钡 36 39.57 2.22 0.14 0.37 1 1.6 0.32 0.68 41.61 10.83 0.07 3.66 97.63 铅钡 37 60.12 2.685 0.23 0.89 1 2.72 1 3.01 17.24 10.34 1.46 3.66 99.98 铅钡 38 32.93 1.38 0.275 0.68 1 2.57 0.29 0.73 49.31 9.79 0.48 3.66 98.57 铅钡 39 26.25 2.685 0.275 1.11 1 0.5 1 0.88 61.03 7.22 1.16 3.66 98.76 铅钡 40 16.71 2.685 0.275 1.87 1 0.45 0.19 0.86 70.21 6.69 1.77 3.66 98.57 铅钡 41 18.46 2.685 0.44 4.96 2.73 3.33 1.79 0.19 44.12 9.76 7.46 3.66 93.71 铅钡 42未风化点1 51.26 5.74 0.15 0.79 1.09 3.53 1 2.67 21.88 10.47 0.08 3.66 98.01 铅钡 42未风化点2 51.33 5.68 0.35 1.87 1.16 5.66 1 2.72 20.12 10.88 2.54 3.66 97.9 铅钡 43部位1 12.41 2.685 0.275 5.24 0.89 2.25 0.76 5.35 59.85 7.29 2.54 3.66 94.68 铅钡 43部位2 21.7 2.685 0.275 6.4 0.95 3.41 1.39 1.51 44.75 3.26 12.83 3.66 96.67 铅钡 44未风化点 60.74 3.06 0.2 2.14 1 12.69 0.77 0.43 13.61 5.22 2.54 3.66 99.12 铅钡 45 61.28 2.66 0.11 0.84 0.74 5 1 0.53 15.99 10.96 2.54 3.66 98.34 铅钡 46 55.21 2.685 0.25 1.87 1.67 4.79 1 0.77 25.25 10.06 0.2 3.66 98.63 铅钡 47 51.54 4.66 0.29 0.87 0.61 3.06 1 0.65 25.4 9.23 0.1 3.66 97.26 铅钡 48 53.33 0.8 0.32 2.82 1.54 13.65 1.03 0.86 15.71 7.31 1.1 3.66 99.17 铅钡 49 28.79 2.685 0.275 4.58 1.47 5.38 2.74 0.7 34.18 6.1 11.1 3.66 95.5 铅钡 49未风化点 54.61 2.685 0.3 2.08 1.2 6.5 1.27 0.45 23.02 4.19 4.32 3.66 98.24 铅钡 50 17.98 2.685 0.275 3.19 0.47 1.87 0.33 1.13 44 14.2 6.34 3.66 90.17 铅钡 50未风化点 45.02 2.685 0.275 3.12 0.54 4.16 1 0.7 30.61 6.22 6.34 3.66 96.94 铅钡 51部位1 24.61 2.685 0.275 3.58 1.19 5.25 1.19 1.37 40.24 8.94 8.1 3.66 95.33 铅钡 51部位2 21.35 2.685 0.275 5.13 1.45 2.51 0.42 0.75 51.34 9.11 8.75 3.66 91.7 铅钡 52 25.74 1.22 0.275 2.27 0.55 1.16 0.23 0.7 47.42 8.64 5.71 3.66 94.08 铅钡 53未风化点 63.66 3.04 0.11 0.78 1.14 6.06 1 0.54 13.66 8.99 2.54 3.66 98.25 铅钡 54 22.28 2.685 0.32 3.19 1.28 4.15 1 0.83 55.46 7.04 4.24 3.66 99.67 铅钡 54严重风化点 17.11 2.685 0.275 1.87 1.11 3.65 1 1.34 58.46 9.11 14.13 3.66 96.92 铅钡 55 49.01 2.71 0.275 1.13 1 1.45 1 0.86 32.92 7.95 0.35 3.66 96.38 铅钡 56 29.15 2.685 0.275 1.21 1 1.85 1 0.79 41.25 15.45 2.54 3.66 92.24 铅钡 57 25.42 2.685 0.275 1.31 1 2.18 1 1.16 45.1 17.3 2.54 3.66 92.47 铅钡 58 30.39 2.685 0.34 3.49 0.79 3.52 0.86 3.13 39.35 7.66 8.99 3.66 98.76 铅钡
最新发布
07-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值