作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想反转链接列表,但我的代码似乎不起作用。我不知道这是怎么回事。我使用了我在这里找到的一个 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/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!