분류 | 게시판 |
베스트 |
|
유머 |
|
이야기 |
|
이슈 |
|
생활 |
|
취미 |
|
학술 |
|
방송연예 |
|
방송프로그램 |
|
디지털 |
|
스포츠 |
|
야구팀 |
|
게임1 |
|
게임2 |
|
기타 |
|
운영 |
|
임시게시판 |
|
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int A[100],t[11],b[11],n=10,N=100;
void initMultiStack();
bool isfull(int n);
void push(int i,int e);
void showMultiStack();
void fullStackException(int i);
void moveStacksLeft(int l , int r);
void moveStacksRight(int l, int r);
int main()
{
int k,i=0,e=0;
initMultiStack();
srand(time(NULL));
for(k=0; k<100; k++)
{
i=rand()%10;
e=rand()%100;
push(i,e);
}
return 0;
}
void initMultiStack()
{
int i;
for(i=0; i<N; i++)
{
A[i]=-1;
}
for(i=0; i<n+1; i++)
{
t[i]=i*10;
b[i]=i*10;
}
}
bool isfull(int n)
{
return b[n+1]==t[n];
}
void push(int i,int e)
{
if(isfull(i))
{
showMultiStack();
printf(" %d 번째 스택 처리 완료\n",i);
fullStackException(i);
showMultiStack();
printf("\n\n");
}
t[i]=t[i]+1;
A[t[i]]=e;
}
void showMultiStack()
{
int i,j;
printf("top: ");
for(i=0; i<n; i++)
{
for(j=0; j<t[i]-b[i]; j++)
{
printf(" ");
}
if(t[i-1] == b[i] && i != 0)
{
//erase one letter
}
printf("%d",i);
for(j=0; j < b[i+1]-t[i]-1; j++)
{
printf(" ");
}
}
printf("\n");
printf(" ");
for(i=0; i < n; i++)
{
for(j=0; j < t[i]-b[i]; j++)
{
printf(":");
}
for(j=0; j<b[i+1]-t[i]; j++)
{
printf(".");
}
}
printf("\n");
printf("base: ");
for(i=0; i <= n; i++)
{
printf("%d",i);
for(j=b[i]; j<b[i+1]-1; j++)
{
printf(" ");
}
}
printf("\n");
}
void fullStackException(int i)
{
int k;
for(k=i-1; k>=0; k--)
{
if(!isfull(k))
{
moveStacksLeft(k + 1, i);
return;
}
}
for(k=i+1; k< n; k++)
{
if(!isfull(k))
{
moveStacksRight(i+1,k);
return;
}
}
printf("\n");
printf("run out of memory!");
exit(0);
}
void moveStacksLeft(int l , int r)// k+1 ,i
{
int k,j;
for(k=l; k<r+1; k++)
{
for(j=b[k]+1; j<=t[k]; k++)
{
A[j-1]=A[j];
}
b[k]=b[k]-1;
t[k]=t[k]-1;
}
}
void moveStacksRight(int l, int r)//i+1,k
{
int k,j;
for(k=r; k>=l; k--)
{
for(j=t[k]; j>=b[k]+1; j--)
{
A[j+1]=A[j];
}
b[k]=b[k]+1;
t[k]=t[k]+1;
}
}
아까 질문올린거지만 다중스택 구현하는 코드인데요...의사코드 보고 짠건데 저 빨간부분은 도저히 무슨 소린지 모르겠네요....
이게 정상적인 출력화면 이랍니다....
그리고 저의 나사가 여러개 빠진듯한 출력창
죄송합니다. 댓글 작성은 회원만 가능합니다.