Проблемы, пока я пытаюсь напечатать список - PullRequest
0 голосов
/ 24 августа 2018

Я застрял в проблемах со списками, проблема в том, что, когда я пытаюсь распечатать весь список, он печатает только первый узел, главная цель - иметь в main.c только вызов функцийкоторые находятся в файле functions.c, который связан с файлом header.h.Вот файл main.c, здесь особо нечего сказать

#include<stdio.h>
#include<stdlib.h>
#include "header.h"



    int main(void){
    List l;


    listNotOrdered(&l, 6);
    headInsertion(&l, 10);
    printList(&l);
    }

Это файл header.h.

typedef struct node{
    int data;
    struct node * next;
}Node;
typedef Node * List;

void listNotOrdered(List *l, int n);
void printList(List *l);
void headInsertion(List *l, int d);

Это - functions.c, логика, лежащая в основе всегофункции должны быть хорошими, это не дает никаких ошибок, я создал функции randomNumber, чтобы создать список со случайными нумераторами, чем чтобы понять, с какого узла начинают печатать printList, я добавил функцию headInsertion, поэтомукогда я печатаю список, он печатает только значение 10, поэтому теоретически он печатает только первый узел.

void headInsertion(List *l, int dato){
    Node * aux = (Node*)malloc(sizeof(Node));
    aux->data = dato;
    aux->next = *l;
    *l = aux;
}

void printList(List *l){
   while(l){
    printf("%d",(*l) -> data);
    (*l) = (*l) -> next;
   }
}

int randomNumber(int a){
    return a = -10 + rand () % ( 20 - 100 + 1);
}

void listNotOrdered(List *l, int n){
srand ( time ( NULL ));
int number, i;

    for (i = 0; i < n; i++){
        (*l) = (Node*)malloc (sizeof (Node));
        (*l) -> data = randomNumber(number);
        (*l) -> next = NULL;
        l = &(*l)->next;
    }
}

1 Ответ

0 голосов
/ 24 августа 2018

Что вы ожидаете печатать?

Поскольку вы печатаете только один раз в printList и возвращаетесь.

void printList(List *l){
    printf("%d",(*l) -> data);
    (*l) = (*l) -> next;
}

Если вы хотите напечатать все узлы, которые вам нужнопройти список, как показано ниже.

void printList(List *l){
 List temp = *l;
  while(temp)
  {
     printf("%d\n",temp -> data);
     temp = temp -> next;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...