我陷入列表问题,问题是当我尝试打印整个列表时,它仅打印第一个节点,主要目标是仅在调用main.c时调用函数由header.h文件连接的functions.c文件中的文件。 这是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;
}
}
答案 0 :(得分:2)
您希望它打印什么?
因为您只在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;
}
}