Печать Кругового связного списка - PullRequest
0 голосов
/ 01 сентября 2018
#include <iostream>
#include <cstdlib>

using namespace std;

struct node
{
    int data;
    struct node* link;
};

struct node* front;
struct node* rear;

void insert()
{
    struct node*temp;
    temp = (struct node*)malloc(sizeof(struct node));
    cin >> temp->data;
    if (front == NULL)
    {
        front = rear = temp;
    }
    else
    {
        rear->link = temp;
        rear = rear->link;
    }
    rear->link = front;
}


void del()
{
    struct node* temp;
    temp = front;
    if (front == NULL)
        cout << "Underflow";
    else
    {
        front = front->link;
        free(temp);
    }
    rear->link = front;
}

void disp()
{
    struct node* temp;
    temp = front;
    if (front == NULL)
        cout << "Empty";
    else
    {
        do
        {
            cout << temp->data << "->";
            temp = temp->link;
        } while (temp != front);

    }
    rear->link = front;
}
int main()
{
    int n;
    bool run = true;
    while (run)
    {
        cin >> n;
        switch (n)
        {
        case 1:
            insert();
            break;
        case 2:
            del();
            break;
        case 3:
            disp();
            break;
        case 4:
            run = false;
            break;
        }
    }
    return 0;
}

Я новичок в этой концепции. Я написал код для удаления вставки и отображения элементов, используя очередь, реализующую концепцию связанного списка. Программа работает без ошибок. Но когда выводится на экран. Мне нужно отобразить вывод вместе с первым элементом, который я вставил .. Например: мой ввод 1 2 1 3 1 4 3 Выход 2-> 3-> 4 ->

но мне нужен выходной сигнал 2-> 3-> 4-> 2-> Я хочу снова увидеть первый элемент на последнем

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Все, что вам нужно сделать, это просто добавить одну строку после цикла do-while следующим образом:

do
{
    cout << temp->data << "->";
    temp = temp->link;
} while (temp != front);
cout<< front->data << "->";

при условии, что front - это head вашего связанного списка. Теперь у меня к вам вопрос, что вы будете делать, если будет одна запись? Поскольку он будет отображаться дважды.

0 голосов
/ 01 сентября 2018

Достаточно просто, измените это

do
{
    cout<<temp->data<<"->";
    temp=temp->link;
}
while(temp!=front);

к этому

int first = temp->data;
do
{
    cout<<temp->data<<"->";
    temp=temp->link;
}
while(temp!=front);
cout<<first<<"->"; // print first element again
...