主题:多栈模拟中栈的个数问题
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<time.h>
#define N 10
int main()
{
clock_t start=clock(),end;
int n,i,num,r,k,j;
char str[5];
int **t,**p;
int *top,*ntop;
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
scanf("%d",&n);
r=N;
**t=malloc(r*sizeof(int));
for(i=0;i<r;i++)
t[i]=malloc(n*sizeof(int));
*top=malloc(r*sizeof(int));
for(i=0;i<r;i++)
top[i]=-1;
while(n--)
{
scanf("%s %d%d",str,&i,&num);
if(strcmp(str,"PUSH")==0)
{
if(i>=r)
{
**p=malloc((2*i)*sizeof(int));
for(k=0;k<2*i;k++)
p[k]=malloc(n*sizeof(int));
for(k=0;k<r;k++)
*p[k]=*t[k];
free(t);**t=**p;
*ntop=malloc((2*i)*sizeof(int));
for(k=0;k<r;k++)
ntop[k]=top[k];
for(k=r;k<2*i;k++)
ntop[k]=-1;
free(top);*top=*ntop;
r=2*i;
}
t[i][top[i]+1]=num;
top[i]++;
}
if(strcmp(str,"POP")==0)
{
if(i>=r)
{
printf("0\n");
continue;
}
num=t[i][top[i]];
if(top[i]==-1)
{
printf("0\n");
continue;
}
else
{
printf("%d\n",num);
top[i]--;
}
}
}
end=clock();
printf("ÔËÐÐʱ¼ä£º%dms\n",end-start);
return 0;
}
我就是用一个2维数组模拟多栈,但我想动态的开辟2维数组,
假设原来有r组栈,当数组不够用时比如输入的栈是i>=r,那就在开一个**p,i*n维,我写的程序在上面,就是运行不了。。还请高手指点一下,,
#include<malloc.h>
#include<string.h>
#include<time.h>
#define N 10
int main()
{
clock_t start=clock(),end;
int n,i,num,r,k,j;
char str[5];
int **t,**p;
int *top,*ntop;
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
scanf("%d",&n);
r=N;
**t=malloc(r*sizeof(int));
for(i=0;i<r;i++)
t[i]=malloc(n*sizeof(int));
*top=malloc(r*sizeof(int));
for(i=0;i<r;i++)
top[i]=-1;
while(n--)
{
scanf("%s %d%d",str,&i,&num);
if(strcmp(str,"PUSH")==0)
{
if(i>=r)
{
**p=malloc((2*i)*sizeof(int));
for(k=0;k<2*i;k++)
p[k]=malloc(n*sizeof(int));
for(k=0;k<r;k++)
*p[k]=*t[k];
free(t);**t=**p;
*ntop=malloc((2*i)*sizeof(int));
for(k=0;k<r;k++)
ntop[k]=top[k];
for(k=r;k<2*i;k++)
ntop[k]=-1;
free(top);*top=*ntop;
r=2*i;
}
t[i][top[i]+1]=num;
top[i]++;
}
if(strcmp(str,"POP")==0)
{
if(i>=r)
{
printf("0\n");
continue;
}
num=t[i][top[i]];
if(top[i]==-1)
{
printf("0\n");
continue;
}
else
{
printf("%d\n",num);
top[i]--;
}
}
}
end=clock();
printf("ÔËÐÐʱ¼ä£º%dms\n",end-start);
return 0;
}
我就是用一个2维数组模拟多栈,但我想动态的开辟2维数组,
假设原来有r组栈,当数组不够用时比如输入的栈是i>=r,那就在开一个**p,i*n维,我写的程序在上面,就是运行不了。。还请高手指点一下,,