■1つのメモリ領域の始端・終端を用いて2つのスタックを実現

データ構造
typedef struct Stack {
int i_size;
int i_idx;
int *p_stack;
} STACK;


1.初期化

int StackInit( STACK *stack_A, STACK *stack_B )
{
 printf("スタックのサイズを決定してください。[1-100]");

 /* スタックサイズの設定 */
 do{
printf(">> ");
scanf("&d", &stack_A->i_size);

if( ( 0 < stack->i_size ) || ( stack->i_size < 101 ) ){
break;
}

printf("入力可能な範囲を超えています。\n");
printf("再度入力してください \n");
 }while( 1 );

 stack_B->i_size = stack_A->i_size;

 /* スタックポインタの設定 */
 stack_A->i_idx = 0;
 stack_B->i_idx = stack_A->i_size - 1; /* スタックの末端が先頭となる */

 /* 動的メモリ領域の確保 */
 stack_A->p_stack = calloc( stack_A->i_size, sizeof( int ) );

 if( stack_A->p_stack == NULL ){
printf("領域確保に失敗しました\n");
return ( -1 );
 }

 stack_B->p_stack = &stack_A->p_stack[stack_A->i_size - 1];

 /* スタック領域の初期化 */
 for( int i = 0; i < stack_A->i_size ; i++ ){
stack_A->p_stack[i] = 0;
 }

 return ( 0 );
}

                                                                                • -

構造体一つでスタックを管理できるやんと、
作っている時に気づく。

Push・Popを作って形になったら、再度設計し直してみる。