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");
    }
  • 相关阅读:
    HDU 2112 HDU Today
    HDU 1869 六度分离
    HDU 3790 最短路径问题
    HDU2066 一个人的旅行
    HDU1596 find the safest road(最短路)
    HDU 1254 推箱子(双重bfs)
    HDU 1429 胜利大逃亡(续) (bfs+状态压缩)
    HDU 1045 Fire Net
    数据结构之单链表头插法,尾插法
    Java--会移动、反弹的球
  • 原文地址:https://www.cnblogs.com/imhuanxi/p/11919711.html
Copyright © 2011-2022 走看看