invert.c

#include <stdio.h>
#include <stdlib.h>
#define  Max 10

struct  List
{
    int   Number;
    int   Total;
    struct  List *Next;
};
typedef    struct List Node;
typedef   Node *Link;

int Data[2][Max] = { 1, 3, 5, 7, 2, 4, 6, 8, 9 ,10,
                    15, 35, 10, 67, 25, 65, 38, 70, 30, 20 };

Link  Invert_List(Link  Head)
{
    Link   Pointer;
    Link   Back;
    Link   Next;

    Back = Head;
    Pointer = Back->Next;
    Back->Next = NULL;

    Next = Pointer->Next;
    Pointer->Next = Back;
    Back = Pointer;
    Pointer = Next;

    while(Pointer->Next != NULL)
    {
        Next = Pointer->Next;
        Pointer->Next = Back;
        Back = Pointer;
        Pointer = Next;
    }
    Pointer->Next = Back;
    Head = Pointer;
    return Head;
}

void   Print_List(Link Head)
{
    Link  Pointer;
    Pointer = Head;
    while(Pointer != NULL)
    {
        printf("[%d,%d]",Pointer->Number,Pointer->Total);
        Pointer = Pointer->Next;
    }
    printf("\n");
}

void  Free_List(Link Head)
{
    Link   Pointer;

    while(Head != NULL)
    {
        Pointer = Head;
        Head = Head->Next;
        free(Pointer);
    }
}


Link Create_List(Link Head)
{
    Link New;
    Link Pointer;
    int  i;

    Head = (Link)malloc(sizeof(Node));

    if (Head == NULL)
        printf("Memory allocate Failure!!\n");
    else
    {
        Head->Number = Data[0][0];
        Head->Total  = Data[1][0];
        Head->Next   = NULL;

        Pointer = Head;

        for(i = 1; i < Max; i++)
        {
            New = (Link)malloc(sizeof(Node));


            New->Number = Data[0][i];
            New->Total  = Data[1][i];
            New->Next   = NULL;

            Pointer->Next = New;
            Pointer = New;
        }
    }
    return Head;
}

void main()
{
    Link  Head;
    Head = Create_List(Head);

    if(Head != NULL)
    {
        printf("Input Data : \n");
        Print_List(Head);

        Head = Invert_List(Head);
        printf("After invert : \n");
        Print_List(Head);
        Free_List(Head);
    }
}

  

转载于:https://www.cnblogs.com/lifelessfaultless/p/9363553.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值