gpt4 book ai didi

c - 我尝试打印列表时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:44 24 4
gpt4 key购买 nike

我遇到了列表问题,问题是当我尝试打印整个列表时它只打印第一个节点,主要目标是在 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;
}
}

最佳答案

您希望它打印什么?

因为您只在 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;
}
}

关于c - 我尝试打印列表时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52007948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com