2014-10-10 4 views
-2
#include <stdio.h> 

#define MAXSIZE 101 

int A[MAXSIZE]; 
int top=-1; 
    int data; 
void push() 
{ 

    printf("Enter a number\n"); 
    scanf(" %d",&data); 

    if (top==MAXSIZE-1){ 
     printf("Overflow.Array size limit reached\n"); 
     return; 
    } 
    A[++top]=data; 
} 

void pop() 
{ 
    if(top==-1){ 
     printf("Empty Stack!\n"); 
     return; 
    } 
    top--; 
} 

int isEmpty() 
{ 
    if(top==-1) 
    { 
     printf("Empty yes\n"); 
     return 0; 
    } 

} 

int first() 
{ 
    return A[top]; 
} 

int printStack() 
{ 
    int i=0; 
    for(i=0;i<=top;i++) 
    { 
     printf("%d \n",A[i]); 
    } 
    return 0; 
} 


int main(int argc, char const *argv[]) 
{ 
    int choice; 
    int flag=1; 

    do{ 
     printf("The options are\n"); 
     printf("1\t\t Push\n2\t\t Pop\n3\t\t Empty\n4\t\t Top\n5\t\t Print\n\n"); 

     scanf(" Enter choice %d",&choice); 
     switch(choice) 
    { 
     case 1: 
      push(); 
      break; 
     case 2: 
      pop(); 
      break; 
     case 3: 
      isEmpty(); 
      break; 
     case 4: 
      first(); 
      break; 
     case 5: 
      printStack(); 
      break; 
     default: 
      printf("Please enter correct menu choice"); 

    } 

    printf("Wanna repeat again ? Press 1 to repeat 0 to exit\n"); 
    scanf("%d",&flag); 


    }while(flag); 

    return 0; 
} 

Я попытался создать реализацию Stack с использованием массивов. У меня возникают проблемы в цикле. Программа запускается, она запрашивает выбор и из меню с переключаемым корпусом, она должна перейти к этой функции, выполнить ее и вернуться к основному()Реализация массива стека в C

Но есть некоторые проблемы, и он снова запускает цикл без каких-либо функций.

+1

Пожалуйста узнать, как для отладки вашей программы: используйте отладчик или просто запустите, поставив 'printf' здесь и там, чтобы наблюдать за поведением или вашей программой. Прочтите текст справки SO. –

+1

Как вы знаете, что он не выполняет никаких функций? – Degustaf

ответ

0
scanf(" Enter choice %d",&choice); 

не является допустимым способом написания scanf() функции. Чтобы показать сообщение на экране, у нас есть puts() и printf(), но scanf() используется только для ввода ввода. Аномальное поведение объясняется здесь:

scanf() reference

Чтобы сделать вашу задачу показать сообщение на экране, а затем принимать входные данные от пользователя, переписать заявление, как:

printf("Enter your choice "); 
scanf("%d", &choice); 
0

Изменить Scanf заявление:

printf("Enter your choice :"); 
scanf("%d", &choice); 
+0

Хорошо, но, возможно, вы могли бы объяснить * почему *. – Caleb

+0

Поскольку scanf читает с консоли, он не печатает на консоли. –

+0

@Caleb Для печати на консоль мы используем printf() –