Структуры в СИ, подскажите пожалуйста прав я или нет.
Всем привет.
Подскажите прав я или нет.
Вот код.
#include
#include
#include “que.h”
void insert (QUE **q, int item)
{ QUE *current=*q;
QUE *previous=0;
QUE *new_node;
while(current)
{ previous=current; current=current->next; }
new_node=(QUE*) malloc (sizeof (QUE));
new_node->info=item;
if (previous)
{ new_node->next=previous->next;
previous->next=new_node;
} else
{ *q=new_node;
(*q)->next=0; } }
Весь вопрос закдючается вот в этих строках
while(current)
{ previous=current; current=current->next; }
если (допустим) у нас в списке 3 элемента (1- голова, 2-элемент, 3-элемент)
1 итерация цикла.
записываем в previous адрес головы
2 итерация цикла
записываем в previous адрес 1 элемента списка... .
т. е в информационной части previous в итогде оказывается адрес последнего элемента а не 0.
далее
if (previous)
{ new_node->next=previous->next;
previous->next=new_node;
по сути мы после создания нового элемента должны записать в его информационную часть 0 но вот этот участок кода записывает адрес последнего элемента? .
Прав ли я?. Или объясните мне мою ошибку.
Вот сама структура
#define QUE struct que
QUE
{
int info;
QUE *next;
}