反转C中的单链列表 [英] Reversing a singly linked list in C

查看:78
本文介绍了反转C中的单链列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可能重复:
如何仅使用两个指针来反转单链列表?

Possible Duplicate:
How to reverse a singly linked list using only two pointers?

这是C代码,用于反向链接列表.但这无法产生所需的输出.

This is C code to reverse a linked list. But this isn't producing the desired output.

struct node *temp,*prev;
while(head->next!=NULL)
  {
    temp=prev=head;
    while(temp->next->next!=NULL)
      {
    temp=temp->next;
    prev=prev->next;
      }
    temp=temp->next;
    temp->next=prev;
    prev->next=NULL;
  }

我想念什么?

推荐答案

您提供的信息不足以提供更多详细信息,因此我猜它是一个非常喜欢的列表.如果是这样,您只需浏览一下列表即可.

You don't provide enough informations to have more details, so I guessed it is a singly liked list. If so, you need to run through your list once.

void reverse(struct node **p) {
    struct node *buff = NULL;
    struct node *head = *p;

    while (head != NULL) {
        struct node *temp = head->next;
        head->next = buff;
        buff = head;
        head = temp;
    }   

    *p = buff;
}

这篇关于反转C中的单链列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆