Наше задание - сначала создать двойной связанный список, а затем отсортировать его.Я сейчас застрял на первой части.По какой-то причине второй узел не добавляется до тех пор, пока третий узел не будет создан, и это будет продолжаться на всех, пока я не войду в последний узел, который не включен, но вместо этого добавлен узел со значением 0.
#include <stdio.h>
#include <stdlib.h>
#include "node.h"
#include "node.c"
int main(){
printf("Enter the values, once finished enter 0 to stop.\n");
int v;
scanf("%d",&v);
struct mynode headnode = {v};
struct mynode *hpoint = &headnode;
struct mynode **hpointp = &hpoint;
while (v!=0){
struct mynode *nn1 = (struct mynode*)malloc(sizeof(struct mynode));
struct mynode *endnode = *hpointp;
scanf("%d",&nn1->value); // using this because value is a constant in mynode and it wont let me write to it directly
nn1->next = NULL;
v = nn1->value;
if (v == 0){
free(nn1);
break;
}
while(endnode->next != NULL){
endnode = endnode->next;
}
endnode->next = nn1;
nn1->prev = endnode;
printlist(hpoint);
}
printlist(hpoint);
return 0;
}
here is the printlist function as well just in case i made a mistake there.
void printlist(struct mynode* n){
if (n->next == NULL && n->prev == NULL ){
printf("%d",n->value);
}
while (n->next != NULL){
printf("%d <===> ",n->value);
n = n->next;
if (n->next == NULL){
printf("%d\n",n->next);
}
}
}
наконец, вот заголовочный файл узла
#ifndef node_h
#define node_h
struct mynode{
int const value;
struct mynode *next;
struct mynode *prev;
};
//struct mynode *insertsort(struct mynode*);
void printlist(struct mynode*);
#endif