C语言:【单链表】逆置反转单链表

原创 2016年05月30日 17:16:14
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>

typedef int DataType;

typedef struct SListNode
{
    DataType data;
    struct SListNode* next;
}SListNode;

SListNode* BuyNode(DataType x)
{
    SListNode* next = (SListNode*)malloc(sizeof(SListNode));
    next->data = x;
    next->next = NULL;
    return next;
}

void PushBack(SListNode* & ppHead, DataType x)
{
    if (ppHead == NULL)
    {
        ppHead = BuyNode(x);
    }
    else
    {
        SListNode* tail = ppHead;
        while (tail->next != NULL)
        {
            tail = tail->next;
        }
        tail->next = BuyNode(x);
    }
}

//逆置反转单链表
void PushFront(SListNode* & ppHead,DataType x)
{
    SListNode* cur = BuyNode(x);
    cur->next = ppHead;
    ppHead = cur;
}

void PrintSNodeList(SListNode* ppHead)
{
    while (ppHead)
    {
        printf("%d->", ppHead->data);
        ppHead = ppHead->next;
    }
    printf("\n");
}

void Test3()
{
    SListNode* List = NULL;
    PushFront(List, 1);
    PushFront(List, 2);
    PushFront(List, 3);
    PushFront(List, 4);
    PushFront(List, 5);
    PrintSNodeList(List);
}

int main()
{
    Test3();
    system("pause");
    return 0;
}


逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表

链表中的一个很常见的操作是:链表的逆置,也叫链表的反转。 如:1->3->5->7->9 反转后是 9->7->5->3->1 红色的箭头是新的变换,明白了操作原理就很好写代码了。 使用了三...
  • Number_0_0
  • Number_0_0
  • 2017年07月15日 11:09
  • 154

逆置/反转单链表,要求只能遍历一遍链表

第一种方法,非递归 list_node* reverse(list_node* list) { assert(list); if (NULL == list->next) { retu...
  • weiaiyisheng_ljj
  • weiaiyisheng_ljj
  • 2018年01月16日 17:53
  • 15

链表面试题/逆置/反转单链表+查找单链表的倒数第k个节点

一、逆置/反转单链表 逆置一个单链表和从尾到头打印不一样,打印不改变节点的位置,只是将数据反着打印一遍,而逆置就是要改变节点的位置。 可以先创建一个空节点,然后从第一个开始每次在单链表上拿一个节...
  • s25691011
  • s25691011
  • 2017年07月15日 16:41
  • 193

17_7_14:逆置单链表+查找单链表的倒数第K个节点+非常规方法实现Add函数

1.【基础题】–逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表 2.【附加题】–实现一个Add函数,让两个数相加,但是不能使用+、-、*、/等四则运算符。ps:也不能用++、–等等...
  • qq_35524916
  • qq_35524916
  • 2017年07月14日 20:39
  • 164

单链表逆置递归算法

辅助指针LinkedNode* ReverseList(LinkedNode* pCur,LinkList& ListHead){ cout
  • tlzhatao
  • tlzhatao
  • 2013年12月11日 18:52
  • 983

单链表逆置算法图解

链表的各种操作逻辑性较强,初学者如果不能很好的理解链表的概念和结构,往往会“蒙圈”!而对于初学者,链表逆置更是比较难以理解! ------------------------------------...
  • u011552404
  • u011552404
  • 2015年12月05日 21:12
  • 3935

带有头节点的单链表的逆置

首先思路必须要清晰,正常思维是倒着来,先找到尾巴结点,这样我们发现都需要记录前驱结点,这样是很繁琐的,因为无法知道前驱结点。 所以只能从头往后逆置,而且逆置是一个结点一个结点这样找的,所以我们需要记...
  • patkritLee
  • patkritLee
  • 2016年02月26日 14:40
  • 737

【数据结构】单链表—逆置单链表

题目:定义一个函数,输入一个链表的头结点,反转该链表并返回反转链表后的头结点。 我们可以借助图来分析一下:我们定义一个新的头结点为head,将begin指向head->_next,当begin不为空...
  • liuxiaoqian_
  • liuxiaoqian_
  • 2016年07月26日 10:28
  • 757

链表常见操作:逆置(反转)

链表中的一个很常见的操作是:链表的逆置,也叫链表的反转。 如:1->3->5->7->9 反转后是 9->7->5->3->1...
  • zhangxiangDavaid
  • zhangxiangDavaid
  • 2014年05月20日 00:17
  • 4100

带头结点的单链表实现就地逆置的更优方法

在习惯上,我们在实现链表的逆置时都会采用从第一个结点开始遍历并不断将链表的指向逆置的方法,但这样做效率其实不高。假设要逆置的链表为L,更好的方法是先用指针p保存L-〉next,再将链表L的头结点置为N...
  • u012137644
  • u012137644
  • 2014年03月13日 21:34
  • 1678
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言:【单链表】逆置反转单链表
举报原因:
原因补充:

(最多只允许输入30个字)