Я пытаюсь создать связанный список, чтобы улучшить свои концепции указателей и адресов. Мне нужно создать связанный список следующим образом:
(1) Прочитайте все узлы сразу на терминале.
(2) Затем покажите окончательный связанный список, сформированный таким образом.
Как я пытаюсь это сделать? Сначала я читаю размер связанного списка (общее количество узлов, которые необходимо ввести). Затем я читаю все узлы по одному в цикле do-while
. Прочитав все узлы, я пытаюсь создать связанный список. Я различаю случай, когда узел является первым узлом, созданным переменной count
, которая будет иметь count=0
, когда узел является первым узлом, после чего он будет в другом цикле.
Вывод, который я получаю, выглядит следующим образом:
enter the size of node
4
start entering the number of elements until your size
2
3
4
5
Printing linked list
2-> //It don't print the other nodes, Just first one
hp@ubuntu:~/Desktop/pointer$
Мой полный код для этого:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
struct node
{
int freq;
struct node * next;
};
typedef struct node node;
node * tree;
void main()
{
int size, data;
int count = 0; //this count flag is to check is it's first node or not inside the do-while loop.
tree = NULL;
printf("enter the size of node\n");
scanf("%d", & size);
printf("start entering the number of elements until your size\n");
node * temp3 = tree;
node * prev;
//Problem creating area is below
do
{
scanf("%d", & data);
if (count == 0)
{
node * temp;
temp = (node * ) malloc(sizeof(node));
temp-> freq = data;
temp-> next = NULL;
prev = temp;
}
else if (count != 0)
{
node * temp;
temp = (node * ) malloc(sizeof(node));
temp-> freq = data;
temp-> next = NULL;
prev-> next = temp;
}
size--;
++count;
}
while (size > 0);
printf("Printing linked list\n");
node * temp1;
temp1 = prev;
//there may be problem here
while (temp1-> next != NULL)
{
printf("%d-> ", temp1-> freq);
temp1 = temp1-> next;
}
printf("\n");
}
Может ли кто-нибудь помочь мне распечатать полный связанный список, указав мне на ошибку с ее решением?
prev
, чтобы указать на первый элемент. Это на самом деле здесь, но не должно ли оно действительно быть обновлено до значенияtemp
и, таким образом, указывать на предыдущий элемент, как следует из названия? - person 500 - Internal Server Error   schedule 06.03.2014