lista jednokierunkowa

0

Czy na pierwszy element pokazywać wskaźnikiem, który ma za zadanie tylko wskazywać właśnie pierwszy element. Czy od razu pierwszy element tworzyć na podstawie struktury listy jednokierunkowej?

Bo ma to znaczenie potem w usuwaniu pierwszego elementu listy.

Jeśli mam taką implementację listy:

#include <iostream>
#include <fstream>

using namespace std;

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

int main()
{
    node *n = new node;
    node *tmp;
    node *h;

    n = new node;
    tmp = n;
    h = n;
    n->data = 1;

    n = new node;
    n -> data = 2;
    tmp -> next = n;

    n = new node;
    n -> data = 3;
    tmp = tmp->next;
    tmp->next = n;

    n = new node;
    n -> data = 4;
    tmp = tmp -> next;
    tmp -> next = n;

    n = new node;
    n -> data = 5;
    tmp = tmp ->next;
    tmp -> next = n;


    n = new node;
    n -> data = 6;
    tmp = tmp -> next;
    n -> next = NULL;
    
    
    node *n = new node;
    node *tmp;
    node *h;

    return 0;
} 

I chciałbym usunąć pierwszy element to jest problem, bo bym musiał usunąć wskaźnik h i nie miałbym wskaźnika na pierwszy element.

0

te 3 ostatnie linijki są do wyrzucenia, przez przypadek wstawiłem.

0

ahhhhh takiego czegoś już dawno nie widziałem ;]

0

konkretnie to czego nie widziales?

0

Wyrzuć i napisz od nowa z wykorzystaniem funkcji (dodawanie, usuwanie itd.).
Jak sam zauważyłeś, trzymanie atrapy, która wskazuje na początek listy może bardzo ułatwić niektóre operacje.

0

A jak zdefiniuje wskaźnik, który pokazuje tylko na pierwszy element i nic poza tym, to jak będę chciał usunąć pierwszy element listy to jak to zrobić jak tylko mam wskaźnik, który pokazuje na pierwszy element?

0

No to ten wskaźnik będzie musiał wskazywać na następny element jako nowy początek listy.

0

Tylko jak na ten następny element będę wskazywać jak nie będę miał żadnego wskaźnika wskazującego na ten następny element i nie będę miał czego wpisać do nowego wskaźnika?

0

W kodzie z 1 posta mam wskaźnik h który pokazuje na pierwszy element listy. Jeśli chcę usunąć pierwszy element to jak go usunąć i jak przekazać wskaźnik h na drugi element?

0

Ostatnio skrobnąłem coś takiego do uc, tylko tam zamiast rzucania wyjątkiem zwracałem 0. http://ideone.com/05zlP9

0

jak chcesz usunąć pierwszy element to ustawiasz wskaźnik na pierwszy element na następny element(w pierwszym elemencie)

0

lista powinna mieć oddzielną funkcję wstawiająca pierwszy element i oddzielną funkcję wstawiająca element w inne miejsce niż pierwszy element?

0

zależy jak często z tego korzystasz... ale raczej tak

0

Napisałem funkcję która dodaje element na początek listy, ale czemu mi się zawiesza program ?

#include <iostream>
#include <fstream>

using namespace std;

struct Wezel
{
    int liczba;
    Wezel *nastepny;
};

int DodajNaPoczatek(Wezel *poczatek, int wartosc);

int main()
{
    Wezel *poczatek = NULL;
    DodajNaPoczatek(poczatek, 3);
    cout << poczatek -> liczba;

    return 0;
}

int DodajNaPoczatek(Wezel *poczatek, int wartosc)
{
    Wezel *tmp;
    tmp = new Wezel;
    tmp -> liczba = wartosc;
    tmp -> nastepny = NULL;
    poczatek = tmp;
}


 

1 użytkowników online, w tym zalogowanych: 0, gości: 1