DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C++ (http://www.daniweb.com/forums/forum8.html)
-   -   Linked stack modification issue (http://www.daniweb.com/forums/thread27693.html)

yaan Jul 8th, 2005 5:47 am
Linked stack modification issue
 
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

Narue Jul 8th, 2005 9:48 am
Re: Linked stack modification issue
 
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.

yaan Jul 8th, 2005 11:15 pm
Re: Linked stack modification issue
 
More specifically, how can I get rid of display () and still "display" poped entries after each pop.

Thanks.

Narue Jul 8th, 2005 11:31 pm
Re: Linked stack modification issue
 
>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().


All times are GMT -4. The time now is 3:34 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC