单链表逆序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct NODE{
    int num;
    struct NODE * next;
};

typedef struct NODE _node;

_node * link_head(void)
{
    _node * head = NULL;

    head = malloc(sizeof(_node));
    head->num = -1;
    head->next = NULL;

    return head;
}

_node * link_inst(_node * head, int num)
{
    _node * node = malloc(sizeof(_node));

    node->next = head->next;
    node->num = num;

    head->next = node;

    return head;
}

void link_print(_node * head)
{
    _node * node = NULL;

    node = head->next;
    while(node != NULL){
        printf("[%d]", node->num);
        node = node->next;
    }
    printf("\n");
}

_node * link_reve(_node * head)
{
    _node * temp = NULL;
    _node * prev = NULL;
    _node * next = NULL;

    temp = head->next;

    while(1){
        if(temp == NULL){
            head->next = prev;
            break;
        }
        next = temp->next;
        temp->next = prev;
        prev = temp;
        temp = next;
    }

    return head;
}

void link_dest(_node * head)
{
    _node * node = NULL;

    while(1){
        node = head->next;
        if(node == NULL){
            free(head);
            break;
        }
        head->next = node->next;
        free(node);
    }
}


int main(int argc, char ** argv)
{
    int i = 0;
    _node * head = link_head();
    for(i = 0; i < 100; i++){
        link_inst(head, i + 1);
    }
    link_print(head);
    link_reve(head);
    link_print(head);

    return 0;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值