是不是用到操作系统碎片整理的相关知识啊?
话说要依情况移动栈?
连接的内存空间完全被栈占用吗?
可以用一小部分建表什么的吗?

话说要依情况移动栈?

连接的内存空间完全被栈占用吗?

可以用一小部分建表什么的吗?

为游戏狂~~!! 大家努力编哈!
2012-03-16 15:32
2012-03-16 15:33
程序代码:#include <stdio.h>
#include <stdlib.h>
int N,StackNum; //N如题 StackNum表示整个栈最多容纳的数目
int *Next,*Line;
void pop(int Stack)
{
int i,j;
if (Next[Stack]==Stack)
{
printf("No date in this Stack\n");
return;
}
i=Stack;
while (i!=Next[i])
{
j=i; i=Next[i];
}
printf("Num %d is out of Stack %d\n",Line[i],Stack);
Next[j]=j;
Next[i]=Next[0]; Next[0]=i;
if (Next[i]==0) Next[i]=i;
}
void push(int Stack,int Num)
{
int i,j;
i=Next[Stack];
while (Next[i]!=i) i=Next[i];
j=Next[0];
if (j==0)
{
printf("No space to save it!\n");
return;
}
Next[i]=j; Line[j]=Num;
Next[0]=Next[j]; if (Next[0]==j) Next[0]=0;
Next[j]=j;
printf("Num %d get in Stack %d\n",Num,Stack);
}
int main()
{
scanf("%d%d",&N,&StackNum);
Line=malloc(sizeof(int)*(N+1+StackNum));
Next=malloc(sizeof(int)*(N+1+StackNum));
int i;
for (i=1; i<=N; i++) Next[i]=i; Next[0]=N+1;
for (i=N+1; i<N+StackNum; i++) Next[i]=i+1; Next[N+StackNum]=N+StackNum;
int flag,Stack,Num; //flag表示入还是出,Stack表示第几个栈,Num表示数目
while (scanf("%d%d",&flag,&Stack)) //flag=1表示出栈,后面接第几个栈,0表示入栈,接第几个栈及入栈的数字 此处是我自己定的输入规则,应为你没有说明
if (flag) pop(Stack);
else
{
scanf("%d",&Num);
push(Stack,Num);
}
}
2012-03-16 16:32
2012-03-16 17:39
我们刚接触栈,来跟各位大神先学习学习……

2012-03-16 17:52

2012-03-16 21:17
2012-03-17 00:17
2012-03-17 17:07

2012-03-17 17:07

2012-03-17 18:11