Dodawanie elementów do tablicy jednokierunkowej

0

Witam, mam problem z dodawaniem elementów do listy jednokierunkowej. Kod wstawiam w c++, w pascalu też nie mogłem się z tym uporać. C++ dopiero zaczynam, więc jeszcze nie mam opanowanej składni, ale nie w tym problem.

Ogólnie prosta sprawa, nie mam problemów z bardziej skomplikowanymi programami na listach, a najprostsza rzecz mnie rozwala. Wstawiam prosty program wstawiający nowy element do łańcucha, dopóki wprowadzona wartość != 0.
Zarówno w pascalu jak i w c++ runtime error (variable p is being used without being inicialized)

#include<iostream>
using namespace std;

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

void dodaj(int v, node *first) //wstawia na poczatek
{
	node *p;
	new(p) node;
	p ->w = v;
	p->next = first;
	first = p;
}

void wyswietl(node *q)
{
	while (q != NULL) 
	{
		cout << q->w << " -> ";
		q = q->next;
	}
}

int main ()
{
	node *first = NULL;
	int x;

	cin>>x;
	while (x!=0) 
	{
		dodaj(x,first);
		cin>>x;
	}
	wyswietl(first);

	getchar();
	return 0;
}
 
0

new(p) node; ???????????????????????????????????????????????????

0

To jakieś pomieszanie składni C++ i Pascala…

node *p = new node();
0

dobra dzięki, moja wina, dopiero zaczyna c++, cały semestr pascal, ale tamto też się kompilowało, więc...

jeszcze się zapytam, jak domyślnie przesyłane są argumenty do funkcji? przez zmienną czy przez wartość? i czy przekazywanie przez referencję (&zmienna) to to samo co przez zmienną? I jak przekazać wskaźnik przez zmienną, bo niedopuszczalne jest napisanie &*wsk (przynajmniej w vc++)

0

Co to znaczy "przez zmienną"?
W C jak i w C++ wartości domyślnie przekazywane są przez wartość. (Tablica nie jest wyjątkiem, bo najpierw występuje niejawna konwersja do wskaźnika, a ten przekazany jest przez wartość)
Jeśli chcesz przekazać wskaźnik przez referencję, to zrób to jak z każdym innym typem

void foo(Typ*& zmienna) { ... }
0

@Azrael_Valedhel w pascalu "przez zmienną" oznacza C++owe "przez referencje", bo w Pascalu masz wtedy słówko var przed zmienną ;)

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