Я "перевожу" эту программу с псевдо-паскальского языка.Недавно я изучил структуры C и функции указателей, и с самого начала я заметил, что указатели очень раздражают.Так что это рекурсивная версия алгоритма Sorted Insertion в Linked List, и он все еще доставляет мне проблемы, такие как сбой.
typedef struct node Node;
struct node
{
int info;
struct node *link;
};
void ordered_insert_rec(Node *head, Node *new_node)
{
if(!head)
{
new_node->link = head;
head = new_node;
}
if(new_node->info < head->info)
{
new_node->link = head;
head = new_node;
}
else
{
ordered_insert_rec(head->link, new_node);
}
Это главное:
int main()
{
Node head;
Node node;
Node node2;
Node inserting_node;
head.info = 1;
head.link = &node;
node.info = 3;
node.link = &node2;
node2.info = 7;
inserting_node.info = 5;
ordered_insert_rec(&head, &inserting_node);
Node *front = &head;
while(front)
{
printf("%d ", front->info);
front = front->link;
if(!front)
{
exit(1);
}
}
}
Может бытьЯ делаю что-то не так с печатью списка в конце алгоритма, не так ли?В командной строке выводится «1 3 7», но программа вылетает через некоторое время.Это должно быть "1 3 5 7", поэтому я заметил, что процедура "orders_insert_rec" работает неправильно.
Спасибо за помощь.:)