#c #data-structures
Вопрос:
это графическая структура данных с использованием списка ссылок. поэтому я застрял на том, что значения узла изменены. сначала я помещаю вывод, а затем код. почему это происходит.
(
это выводится в значениях узла im-печати, и они изменились, почему
введите число ребер= 4
введите номер узла 4
#0#1#2#3
#1#2#0#3
введите соединение
)
//вот код
#include <iostream>
using namespace std;
struct graph
{
int nn;
int ne;
struct node *a;
};
struct node
{
int x;
node *next;
};
void makegraph(graph *amp;g)
{
cout << "enter no of edges=" << endl;
cin >> g->ne;
cout << "enter no of nodes" << endl;
cin >> g->nn;
g->a = new node[g->nn];
node *q;
node *ih = g->a;
for (int i = 0; i < g->nn; i )
{
ih->x = i;
cout << "#" << ih->x;
ih->next = NULL;
ih = ih i;
}
cout << endl;
int ii = 0;
ih = g->a;
while (ii < 4)
{
cout << "#" << (ih ii)->x;
ii ;
}
cout << endl;
int t, y;
node *temp = NULL;
for (int i = 0; i < g->ne; i )
{
cout << "enter connection" << endl;
****output is of till here****
cin >> t >> y;
q = new node;
q->x = y;
q->next = NULL;
g->a = g->a t;
temp = g->a;
while (temp->next != NULL)
{
temp = temp->next;
}
temp->next = q;
g->a = g->a - t;
}
g->a = ih;
}
int main()
{
graph *g = new graph;
makegraph(g);
}
Комментарии:
1. что означает
ih
»nn
,ne
«? Не могли бы вы, пожалуйста, добавить комментарий к их названию, чтобы объяснить их аббревиатуру? (Кроме того, это действительно плохая практика-называть переменные таким образом. Назовите их полными словами, какnext_node
мне кажется . в противном случае другим будет трудно понять ваш код.)2.
ih = ih i
это не имеет смысла. На первой итерации циклаih
указывает наg->a[0]
. На втором, это снова указывает наg->a[0]
(такih = ih i
как нет операции, когдаi == 0
). На третьем, это указывает наg->a[1]
. На четвертом, кg->a[3]
;g->a[2]
пропускается. Вот как вы в конечном итоге сохранили 1, 2 и 3 в узлах 0, 1 и 3. Значение в узле 2 на самом деле является неинициализированным мусором; оно случайно равно нулю.3. @ignortandetnik хорошо понял, я должен написать ih=ih 1;