zoukankan      html  css  js  c++  java
  • c语言单链表反转

    单链表反转可用迭代法,也可用递归方法,这里用迭代法(循环)实现。

    示意图如下,其中pre指前一个节点,cur指当前节点,temp为临时节点。

    主要思路就是让当前节点指向前一个节点,即cur->next=pre,需要事前将cur->next赋值给temp。然后下移即可。

    #include <stdio.h>
    typedef struct node_s {
        int item;
        struct node_s* next;
    }node_t,*link;
    
    //新建节点
    link newNode(int item) {
        link new = malloc(sizeof(node_t));
        new->item = item;
        new->next = NULL;
        return new;
    }
    
    link Reverse(link header){
        if (header == NULL || header->next == NULL)    {
            return header;}
        link pre; //前一个
        link cur; //当前
        link temp;//临时变量
        pre = header;
        cur = header->next;
        pre->next = NULL;
    
        while (cur != NULL)
        {
            temp = cur->next;  //temp暂存
            cur->next = pre;  //cur指向后面实现逆序
            pre = cur;    //pre后移
            cur = temp;   //cur后移
        }
        return pre;
    }
    
    void printLink(node_t* header){
        while (header != NULL){
            if (header->next != NULL){
                printf("%d->", header->item); //不是最后一个
            }
            else{
                printf("%d", header->item);
            }
            header = header->next;
        }
        printf("
    ");
    }
    int main(int argc, char* argv[]){
        //创建单向链接
        node_t *header = NULL, *cur = NULL;
        for (int i = 1; i <= 3; ++i) {
            node_t* new = newNode(i);
            if (header == NULL){
                header = new;
            }
            else{
                cur->next = new;  //加到后面
            }
            cur = new;
        }
    
        printLink(header); //打印链表
        auto newHeader = Reverse(header);  //auto关键字,只用在赋值语句中
        printLink(newHeader);
        system("pause");
    }
  • 相关阅读:
    Redis Java API
    怎样测试TCP&UDP端口
    [转]太阳致敬式瑜伽
    [转]你所不知道的超级瘦腿运动——空中蹬自行车
    Oracle 存储过程学习
    hive Java API
    [转]骨盆操
    [转]HDFS客户端的权限错误:Permission denied
    【转】拇指拇外翻的纠正训练
    [转]shell 变量替换
  • 原文地址:https://www.cnblogs.com/imhuanxi/p/11919711.html
Copyright © 2011-2022 走看看