Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα , θελω να αναπτυξω ενα πρόγραμμα με ουρά με υλοποίηση συνδεδεμένης λίστας. Ποιο συγκερκιμένα το πρόγραμμα θέλω να διαβάζει 3 δεδομένα(μαζι), και καθε φορά να εισάγει ή εξάγει αυτές τις 3αδες απο την ουρά. τι πρέπει να προσθέσω στον παρακάτω κώδικα?

#include<iostream>

#include<cstdlib>

using namespace std;

struct node{

    int info;

    struct node *next;

};

class Queue{

    private:

        node *rear;

        node *front;

    public:

        Queue();

        void enqueue();

        void dequeue();

        void display();

};

Queue::Queue(){

    rear = NULL;

    front = NULL;

}

void Queue::enqueue(){

    int data;

    node *temp = new node;

    cout<<"Enter the data to enqueue: ";

    cin>>data;

    temp->info = data;

    temp->next = NULL;

    if(front == NULL){

        front = temp;

    }else{

        rear->next = temp;

    }

    rear = temp;

}

void Queue::dequeue(){

    node *temp = new node;

    if(front == NULL){

        cout<<"\nQueue is Emtpty\n";

    }else{

        temp = front;

        front = front->next;

        cout<<"The data Dequeued is "<<temp->info;

        delete temp;

    }

}

void Queue::display(){

    node *p = new node;

    p = front;

    if(front == NULL){

        cout<<"\nNothing to Display\n";

    }else{

        while(p!=NULL){

            cout<<endl<<p->info;

            p = p->next;

        }

    }

}

int main(){

    Queue queue;

    int choice;

    while(true){

        cout<<"\n1.Enqueue\n2. Dequeue\n3. Display\n 4.Quit";

        cout<<"\nEnter your choice: ";

        cin>>choice;

        switch(choice){

            case 1:

                queue.enqueue();

                break;

            case 2:

                queue.dequeue();

                break;

            case 3:

                queue.display();

                break;

            case 4:

                exit(0);

                break;

            default:

                cout<<"\nInvalid Input. Try again! \n";

                break;

        }

    }

    return 0;

}
  • Moderators
Δημοσ.

Τι εννοείς να διαβάζει 3 δεδομένα μαζί; Κάθε φορά που πατάς 1 να διαβάζει 3 nodes;

Δημοσ.

nai, πχ info1, info2, info3


#include <iostream>
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
using namespace std;

/*int main()
{
    int choice;
    cout << "Επέλεξε μια απο τις παρακάτω ενέργειες" << endl;
    cout << "1.Καταχώρηση" << endl<< "2.Διόρθωση" <<endl<<"3.Έξοδος"<<endl;
    do{
    cin>> choice;
    }while(choice<1 && choice>3);

    return 0;
}*/
#include<iostream>

#include<cstdlib>

using namespace std;

struct node{

    int info;
    int info2;
    struct node *next;

};

class Queue{

    private:

        node *rear;

        node *front;

    public:

        Queue();

        void enqueue();

        void dequeue();

        void display();

};

Queue::Queue(){

    rear = NULL;

    front = NULL;

}

void Queue::enqueue(){

    int data;
    int data2;
    node *temp = new node;

    cout<<"Enter the data to enqueue: ";

    cin>>data;
    cin>>data2;

    temp->info = data;
    temp->info2 = data2;
    temp->next = NULL;

    if(front == NULL){

        front = temp;

    }else{

        rear->next = temp;

    }

    rear = temp;

}

void Queue::dequeue(){

    node *temp = new node;

    if(front == NULL){

        cout<<"\nQueue is Emtpty\n";

    }else{

        temp = front;

        front = front->next;

        cout<<"The data Dequeued is "<<temp->info<<"  "<<  temp->info2;

        delete temp;

    }

}





int main(){

    Queue queue;

    int choice;

    while(true){

        cout<<"\n1.Enqueue\n2. Dequeue\n3. Display\n 4.Quit";

        cout<<"\nEnter your choice: ";

        cin>>choice;

        switch(choice){

            case 1:

                queue.enqueue();

                break;

            case 2:

                queue.dequeue();

                break;


            case 3:

                exit(0);

                break;

            default:

                cout<<"\nInvalid Input. Try again! \n";

                break;

        }

    }

    return 0;

}

νομιζω καπως ετσι ...

  • Moderators
Δημοσ.

Υπάρχει κάποιος λόγος που η ουρά σου πρέπει να ξέρει πώς διαβάζεις τα δεδομένα σου; Αν αύριο θες να τα διαβάζεις από αρχείο, ή τα μισά από αρχείο και τα μισά απ' το πληκτρολόγιο ή δεν ξέρω γω τι άλλο θα αλλάξεις την υλοποίηση της ουράς σου;

Αυτό που θα έπρεπε να ενδιαφέρει την ουρά σου είναι μόνο να μπορεί να αποθηκεύει σωστά ό,τι δεδομένα χρειάζεσαι και πώς να πάει μπρος-πίσω. Το πώς διαβάζονται τα δεδομένα ή πώς χρησιμοποιούνται δεν είναι δική της δουλειά.

 

Τώρα από τον καινούριο κώδικα που έβαλες βλέπω ότι απλώς ήθελες το node σου να έχει περισσότερες πληροφορίες.και όχι να διαβάζεις τρία ξεχωριστά nodes.

 

 

 

Μη χρησιμοποιείς NULL. Αν θες να αρχικοποιήσεις έναν pointer ως null χρησιμοποιήσε το nullptr. Επίσης γενικά δε χρειάζεσαι C headers, αλλά άμα είσαι 100% σίγουρος ότι χρειάζεσαι κάποιον, κάνε τον include ως, πχ, cstdlib αντί για stdlib.h.

 

 

  • Like 2
Δημοσ.

Ότι είπε ο Kercyn. Αν βάζεις σωστά στην ουρά σου, δεν σε εμποδίζει τίποτα από το να κάνεις ένα case που όταν πατάς 1, να κάνει δέχεται 3 φορές δεδομένα και να τα βάζει ένα ένα σε αυτή.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...