? 今天学习了链表、栈和队列的概念和思想。然后学习了它们的代码实现,但是还是看不太明白,于是自己用数组根据栈和队列的思想做了一个低配版的栈还有队列。
? 我用低配版数组栈尝试做了一下题组中的G题,居然通过了,题目和代码如下
?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int i,a[200],b[200];
int n;
while(scanf("%d",&n)!=EOF)
{
int max=-1,t=0,k=1;
for(i=1;i<=n;i++) scanf("%d",&a[i]);
for(i=1;i<=n;i++)
{
while(k<=a[i])
{
b[t]=k;
t++;
k++;
}
if(t>max)max=t;
if(a[i]==b[t-1])t--;
}
if(t==0)printf("%d\n",max);
else printf("-1\n");
}
return 0;
}
? 然后我又用数组敲了个低配版的队列,试图通过E题,但很可惜没有通过,虽然自己运行时和样例输出一样,但系统表示runtime error,看来低配版还是不太行,题目和代码如下
?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int T;
while(scanf("%d",&T)!=EOF)
{
int a[200]={0},last=0,top=0,x;
char s[10];
for(int i=1;i<=T;i++)
{
gets(s);
if(s[0]=='e')
{
a[last]=s[8]-'0';
last++;
}
else if(s[0]=='d')
{
if(a[top]==0)printf("this is empty!\n");
else {
printf("%d\n",a[top]);
top++;
}
}
else if(s[0]=='q')
{
if(a[top]==0)printf("this is empty!\n");
else {
for(x=top;x<last;x++)
{
printf("%d\n",a[x]);
a[x]=0;
}
top=0;
last=0;
}
}
}
}
return 0;
}
现在对于栈和队列还有链表的代码实现还是不太清楚,还需要继续学习
|