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;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

反转单链表

反转单链表

反转单链表 1. 用数组将单链表的值存储在数组里。方法简单,但浪费空间。 2. 遍历链表,从第二个节点开始,将每个节点的next指向前一个节点。原链表的最后一个节点变为头节点。 3. 遍历链表,除第一...

算法导论 O(n)时间内反转单链表

算法导论 O(n)时间内反转单链表1. 算法导论原题 Give a O(n) time nonrecursive procedure that reverses a singly linked l...

不开辟新空间反转单链表(递归版本)

写的还是很坑的,今天状态奇差 ListNode* ReverseList(ListNode* pHead, ListNode*& pNewHead ) { if ( NULL == pHead )...

[LeetCode]206. Reverse Linked List(反转单链表)

206. Reverse Linked ListReverse a singly linked list. 反向单链表。 Hint: A linked list can be reversed ...

反转单链表的几种方法

最近试着做一些笔试面试题,既是为来年找工作做准备,也可以做为数据结构和算法的复习笔记,就陆续发在这里吧,有需要的朋友可以看一下,如果有没考虑周全的地方欢迎指正。   先来一个最常见的题目:反转单...

反转单链表

// ConvertList.cpp : Defines the entry point for the console application. // #include "stdafx.h" #i...

反转单链表的几种方法

反转单链表的几种方法   最近试着做一些笔试面试题,既是为来年找工作做准备,也可以做为数据结构和算法的复习笔记,就陆续发在这里吧,有需要的朋友可以看一下,如果有没考虑周全的地方欢迎指正。   ...
  • cs408
  • cs408
  • 2015-07-24 16:34
  • 333

头插入法反转单链表

建立一个新的结点n,从现存链表中依次取结点插入到n的后面。   template struct Node { T data; Node *next; //此处也可以省略 };...

Java 反转单链表

基础的扎实程度直接决定高度 -某程序员 反转单链表可以通过 递归 和 遍历 两种方式实现。首先创建一个单链表实体:public class Node { private int reco...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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