gpt4 book ai didi

C - 我想反转链表

转载 作者:行者123 更新时间:2023-11-30 17:26:41 26 4
gpt4 key购买 nike

我想反转链接列表,但我的代码似乎不起作用。我不知道这是怎么回事。我使用了我在这里找到的一个 reverse() 函数,我什至在纸上测试了它,所以我很确定代码是好的,但我肯定还缺少一些东西。我很想知道出了什么问题。这是我的代码:

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


typedef struct node{
int val;
struct node * next;
}node;

void push(int val, node **head){
node* temp=(node*)malloc(sizeof(node));
node* current=*head;
temp->val=val;
if(*head==NULL)
{*head=temp;
temp->next=NULL;}
else
{while(current->next!=NULL)
current=current->next;
current->next=temp;
temp->next=NULL;}
}
int reverse(node * head){
node *previous = NULL;
node *current = head;
node *forward;
while (current != NULL) {
forward = current->next;
current->next = previous;
previous = current;
current = forward;
}
return previous;

}
void print(node *new_head){

node* current2=new_head;
current2=current2->next;
while(current2!=NULL)
{
printf("%d", current2->val);
current2=current2->next;
}}

int main()
{ node * head= NULL;
int n;
node * new_head;
scanf("%d", &n);
push(n,head);
scanf("%d", &n);
push(n,head);
scanf("%d", &n);
push(n,head);
new_head=reverse(head);
print(new_head);

return 0;}

我只想反转输入,例如:1,2,3。所以输出将是 3,2,1。

最佳答案

尝试以下操作

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

typedef struct node
{
int val;
struct node * next;
} node;

void push( node **head, int val )
{
node **current = head;

while ( *current ) current = &( *current )->next;

*current = ( node * )malloc( sizeof( node ) );

( *current )->val = val;
( *current )->next = NULL;
}

node * reverse( node * head )
{
node *new_head = NULL;
node *current = head;

while ( current )
{
node *next = current->next;
current->next = new_head;
new_head = current;
current = next;
}

return new_head;
}

void print( const node *head )
{
for ( ; head; head = head->next ) printf( "%d ", head->val );
printf( "\n" );
}

void delete( node *head )
{
while ( head )
{
node *tmp = head;
head = head->next;
free( tmp );
}
}

int main()
{
node *head = NULL;
int n;

scanf( "%d", &n );
push( &head, n );

scanf( "%d", &n );
push( &head, n );

scanf( "%d", &n );
push( &head, n );

print( head );

head = reverse( head );

print( head );

delete( head );

return 0;
}

如果输入 1 2 3 输出将为

1 2 3 
3 2 1

关于C - 我想反转链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26691700/

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