gpt4 book ai didi

c - 链表结构

转载 作者:太空宇宙 更新时间:2023-11-04 04:19:59 25 4
gpt4 key购买 nike

typedef struct numbers{
int number_inserted;
struct numbers *next;
}NUMBERS;


int main(){
NUMBERS * num=NULL
int i=0;

while(i<5){
num=add_number(num);
i++;
}
}

NUMBERS * add_number(NUMBERS *num){


if (num== NULL) {
num = (NUMBERS *) malloc(sizeof(NUMBERS));
num->number_inserted=0;
num->next = NULL;
}

int gets;
printf("Insira o numero");
scanf("%d",&gets);
num->number_inserted=gets;
num->next = ????????

return num;
}

我如何将我的变量 num->next 链接到我的结构 NUMBERS,这样当它再次被调用时我就不会丢失我之前插入的数字。

最佳答案

对于根据 C 标准的启动器,不带参数的函数 main 应声明如下

int main( void )

而且您似乎在 main 中定义了函数 add_number(如果您没有省略 main 的右大括号)。 C 标准不允许在另一个函数内声明一个函数。

通常,如果声明了一个单向链表,则列表的节点会添加到它的开头。

这是一个演示程序,展示了如何将新节点添加到单向链表的开头和结尾。

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

typedef struct numbers
{
int number_inserted;
struct numbers *next;
} NUMBERS;


int add_number_front( NUMBERS **numbers, int x )
{
NUMBERS *tmp = malloc( sizeof( NUMBERS ) );
int success = tmp != NULL;

if ( success )
{
tmp->number_inserted = x;
tmp->next = *numbers;

*numbers = tmp;
}

return success;
}

int add_number_back( NUMBERS **numbers, int x )
{
NUMBERS *tmp = malloc( sizeof( NUMBERS ) );
int success = tmp != NULL;

if ( success )
{
tmp->number_inserted = x;
tmp->next = NULL;

while ( *numbers != NULL ) numbers = &( *numbers )->next;

*numbers = tmp;
}

return success;
}


void display_numbers( NUMBERS **numbers )
{
for ( NUMBERS *current = *numbers; current != NULL; current = current->next )
{
printf( "%d ", current->number_inserted );
}
}

int main(void)
{
NUMBERS *numbers = NULL;

for ( int i = 0; i < 5; i++ ) add_number_back( &numbers, i );

display_numbers( &numbers );
putchar( '\n' );

for ( int i = 0; i < 5; i++ ) add_number_front( &numbers, i );

display_numbers( &numbers );
putchar( '\n' );

return 0;
}

它的输出是

0 1 2 3 4 
4 3 2 1 0 0 1 2 3 4

关于c - 链表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47684674/

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