1

Тема: Знайти перший елемент в списку C++

Ось моя програма для реалізації однозв'язного списку на С++. Я заношу елементи в список поки не достигну нуля і потім їх вивожу. Мені потрібно вивести перший елемент списку на екран. Підкажіть будь ласка яким чином це робиться.

#include "stdafx.h"
#include "iostream"
using namespace std;

struct Node {
    int data;
    Node *next;
};

int main()
{
    Node *first = 0;
    Node *p;

    cout << "Enter a list" << endl;
    int i;
    while (true) {
        cin >> i;
        if (i == 0) break;

        p = new Node;
        p -> data = i;

        p -> next = first ;
        first = p;
    }

    cout << "List: ";

    p = first;
    while (p) {
        cout << p -> data;
        p = p -> next;
    }
    cout << endl;
    return 0;
}

2

Re: Знайти перший елемент в списку C++

Тобто ви можете вивести всі елементи, але не можете вивести перший? Ви певні, що це ваш код?

3 Востаннє редагувалося Luchnik (26.10.2014 15:22:32)

Re: Знайти перший елемент в списку C++

Мені здається що треба крутитись навколо first і проходити всі елементи поки next не є NULL, бо по суті це і буде перший елемент
Якось так

if (first == 0) {
    first = p;
}

Але чогось не виходить

4 Востаннє редагувалося Betterthanyou (26.10.2014 16:24:47)

Re: Знайти перший елемент в списку C++

#include "iostream"

using namespace std;

struct Node {
    int data;
    Node *next;
};

int main()
{
    Node *first = 0;
    Node *p;
    Node *One = NULL;

    cout << "Enter a list" << endl;
    int i;
    while (true) {
        cin >> i;
        if (i == 0) break;

        p = new Node;
        p->data = i;
        if (One == NULL)
            One = p;
        p->next = first;
        first = p;
    }

    cout << "List: ";

    p = first;
    while (p) {
        cout << p->data;
        p = p->next;
    }
    cout << endl;
    cout<<"One = "<<One->data;
    return 0;
}

5

Re: Знайти перший елемент в списку C++

Зробив! Треба було оголосити глобальну змінну щоб зберегти перший елемент ну і умову яку я вище описав

#include "stdafx.h"
#include "iostream"
using namespace std;

struct Node {
    int data;
    Node *next;
};

int firstElement;

int main()
{
    Node *first = 0;
    Node *p;
    
    cout << "Enter a list" << endl;
    int i;
    while (true) {

        cin >> i;
        if (i == 0) break;

        // створити новий елемент списка
        p = new Node;
        p -> data = i;

        // прикріпити новий елемент на початок списку
        p -> next = first;
        
        if (first == 0) {
            first = p;
            firstElement = first -> data;
        }

        first = p;
    }

    cout << "First element is: " << firstElement << endl;
    cout << "List: ";

    p = first;
    while (p) {

        cout << p -> data;
        p = p -> next;
    }
    cout << endl;

    return 0;
}

6

Re: Знайти перший елемент в списку C++

Luchnik написав:

Але чогось не виходить

Потрібно так

p = first;
    while (p->next) {
        p = p->next;
    }
    cout<<"One = "<<p->data;