Проблема с do в коде с указателями - PullRequest
0 голосов
/ 19 сентября 2019

Я делал простой программный код, в который вы вводите данные, и после каждого ввода программа будет спрашивать вас, хотите ли вы добавить еще один.если бы вы ввели любое другое значение, кроме «Y», то он завершил бы цикл и отобразил бы все ваши данные, но я не могу заставить его работать, потому что после первого цикла, который является частью «do» вцикл do-while, но при вводе второго значения данных он просто выходит из режима

#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <mem.h>
#include <ctype.h>
#include <windows.h>
typedef struct node {
       int data;
       node *next;

};
int main() {
  node *start, *new_node, *top_node ;
  int Ctr=1;
  char choice;

system("cls");
start = NULL;
new_node = (node*)malloc(sizeof(node));
start = new_node;
printf("Creating Stacks!!!\n\n");

do{
    printf("Enter Data to be inputted into stacks : ");
    scanf("%d", &new_node -> data);

    printf("Would you like to add another number? : ");
    scanf(" %c", &choice);
    if (toupper(choice) == 'Y')
        {
            new_node -> next = (node*)malloc(sizeof(node));
            new_node = new_node -> next;
            new_node -> next = start;
            start = new_node;
            new_node = NULL;
            Ctr++;
        }

  }while(toupper(choice) =='Y');

    system("cls");

    printf("Displaying Content of Stacks!!!\n\n");
    top_node = start;   
    Ctr = 1;
do
{
if(start == NULL)
    {
        printf("The Stack is Empty!\n");
    }
else {
    printf("Node No. %d Content : \n", Ctr);
    printf("\tData => %d \n", top_node -> data);
    Ctr++;
    top_node = top_node -> next;
    }
}while(top_node != NULL);
getch();
return 0;

}
...