前言: 設計2個函數pushK(int stack[], int n, int *top, int k,intdata),popk(int stack[], int *top, int k, int *data)
完成將一數值push in & pop out
int top=8;
int stack[STACK_SIZE]={1,2,4,5,6,7,8,9,10};
int k,stack_data;
printf("Please input a number you want push in\n");
scanf("%d",&stack_data);//insert data
k=3;//push a data at 3rd position
printStack(stack,top);
pushK(stack,STACK_SIZE,&top,k,stack_data);
printStack(stack,top);
k=3;
stack_data=popK(stack,&top,k,&stack_data);
printf("The data is %d\n",stack_data);
printStack(stack,top);
int temp_data,temp_top=-1,temp[STACK_SIZE];
if(*top==n-1){
return(-1);
}else{
while(*top>k-2)
{
pop(stack,top,&temp_data);
push(temp,STACK_SIZE,&temp_top,temp_data);
}
push(stack,STACK_SIZE,top,data);
while(temp_top>=0)
{
pop(temp,&temp_top,&temp_data);
push(stack,STACK_SIZE,top,temp_data);
}
}
int temp_data,temp_top=-1,temp[STACK_SIZE];
int pop_data;
if(*top<k){
return(-1);// no data at this position
}
while(*top>k-1)
{
pop(stack,top,&temp_data);
push(temp,STACK_SIZE,&temp_top,temp_data);
}
pop(stack,top,&temp_data);
pop_data=temp_data;
while(temp_top>=0)
{
pop(temp,&temp_top,&temp_data);
push(stack,STACK_SIZE,top,temp_data);
}
if(*top<n-1){
*top=*top+1;
stack[*top]=data;
return(1);
}else{
return(0);
}
if(*top>-1){
*data=stack[*top];
*top=*top-1;
return(1);
}else{
return(0);
}
int index;
for(index=0;index<=top;index++
{
printf("%d ",stack[index]);
}
printf("\n");
return((*top==-1)?1:0);
return((*top==n-1)?1:0);
留言列表