• 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");
    }
  • 相关阅读:
    Matlab学习-(1)
    数据库事务是什么?
    Python解释器有哪些类型,有什么特点?
    Ajax向后台发送简单或复杂数据,后端获取数据的方法
    模态对话框被灰色阴影遮罩挡住的问题
    闭包
    Django——form表单
    Django中常用的正则表达式
    Django中装饰器的使用方法
    Django中自定义过滤器步骤
  • 原文地址:https://www.cnblogs.com/imhuanxi/p/11919711.html
Copyright © 2020-2023  润新知