0

I need to have my code modified, but am unsure how to write the code to do it. After the ID and name are poped from the stack, I need the program to automatically display the list created i.e. I don't want to use display as an option.

I think I need to have main function loop back after pop and display are done. How can I do this?

Here is the code:

#include<conio.h>
#include<stdio.h>
#include <iostream.h>

class link_stack
	
{

	struct node
	
	{

		int id;

		char name[10];

		node *next;

	};

	node *top,*x,*ptr;

	public:

		link_stack()

		{

			top=x=ptr=NULL;

		}

		void push()

		{

			x=new node;

			cout << "Enter an ID number and name: ";

			cin >> x->id >> x->name;


			x->next=top;

			top=x;

		}

		void pop()

		{

			if(top==NULL)

				cout<<"\nStack is Empty";

			else

			{

				x=top;

				top=top->next;

				delete x;

			}

		}

		void display()

		{

			ptr=top;

			while(ptr!=NULL)

			{

				cout << "\nName: "<< ptr->name;

				cout<<"\nID number: "<<ptr->id;

				ptr=ptr->next;

			}

		}

};

void main()

{

	link_stack obj;

	int choice;

	do

	{

		cout << "\n ----------MENU---------- \n";

		cout << "1.Push\n"
			
			 <<  "2.Pop\n"
			   
			 <<  "3.Display\n"
			   
			 <<  "4.Exit";

			   cout << "\nEnter your choice: ";

		cin>>choice;

		switch(choice)

		{

		case 1: obj.push();

			break;

		case 2: obj.pop();

			break;

		case 3: obj.display();

			break;

		case 4: cout << endl;

		}

	}

	while (choice!=4);

	getch();

}

Code tags added. -Narue

2
Contributors
3
Replies
4
Views
12 Years
Discussion Span
Last Post by Narue
0

Use code tags for any future code. I've added them for you this time, but next time I may just feel the need to delete your post if you fail to do it properly.

>After the ID and name are poped from the stack, I need the program to
>automatically display the list created
Change this:

case 2: obj.pop();
  break;
case 3: obj.display();
  break;

To this:

case 2: obj.pop();
case 3: obj.display();
  break;

By default, cases will fall through to the next case if you don't use a break statement. So if you want to display the stack after every pop, simply omit the break on the pop case.

If that's not what you want, be more specific.

0

More specifically, how can I get rid of display () and still "display" poped entries after each pop.

Thanks.

0

>More specifically, how can I get rid of display () and still "display" poped entries after each pop.
That's easy: you don't. Since the data members of your class are private (as they should be), the only way to display them is with a public member function or a friend function. Either way you would have the equivalent of link_stack::display().

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.