• 单链表的逆序


    用c++实现单链表的逆序输出。

    题目描述:在已知单链表头节点的情况下,设计算法逆置单链表并输出

    方法一:采用首先将头节点指向空,让其变为尾节点,然后利用中间节点 p、q 将其后的节点一个接一个改为指向前面的节点

     

    #include <iostream>  
    using namespace std;  
      
    struct List  
    {  
        int num;  
        List *next;  
    };  
      
    List *createList(int n)       //创建含有n个节点的单链表  
    {  
        List *head, *p, *q;  
        q=head = NULL;   //初始化表头和中间指针  
        int i;  
        for (i = n; i > 0; --i)  
        {  
            p = new List;     //申请空间,创建第一个节点  
            cin >> p->num;      //往节点中存入数据信息  
            if (head == NULL)  
            {  
                head = p;  
            }  
            else  
            {  
                q->next = p;  
            }  
            q = p;  
        }  
        q->next = NULL;  
        return head;  
    }  
      
    List *ReverseList(List *head)          //逆置单链表  
    {  
        List *p, *r;       //定义两个中间节点,用于顺移逆置链表节点  
        if (head->next == NULL)  
            return head;  
        p = head;          //获取头节点地址  
        r = p->next;       //获取链表第二个节点地址  
        p->next = NULL;    //头节点变为尾节点,原链表表头指向空  
        while (r)  
        {  
            p = r;  
            r = r->next;  
            p ->next = head;   //使第二个节点指向原先的头节点  
            head = p;          //使第二个节点变为头节点,用于循环逆置  
        }  
        return head;  
    }  
      
    void print(List *head)        //输出逆置后的单链表  
    {  
        List *p;  
        p = head;  
        while (p)  
        {  
            cout<<p->num;  
            p = p->next;  
            cout << " ";  
        }  
        cout << endl;  
    }  
    int _tmain(int argc, _TCHAR* argv[])  
    {  
        List *p, *q;  
        cout << "请输入单链表的节点个数:";  
        int n;  
        cin >> n;  
        cout << endl;  
        cout << "创建一个节点为" << n << "的单链表" << endl;  
        p = createList(n);  
        cout << endl;  
        cout << "这步为程序逆置单链表" << endl;  
        q = ReverseList(p);  
        cout << endl;  
        cout << "打印逆置后的单链表" << endl;  
        print(q);  
        cout << endl;  
        return 0;  
    }  
  • 相关阅读:
    elementplus 按需引入将英文组件修改为中文
    vue3动态组件的展示
    vue3中的四种插槽的介绍保证让你看看的明明白白!
    发福利了!!!团队机器人每日分享最新漏洞验证脚本数据库文件分享!
    selenium 获取token
    7个开源交易撮合引擎
    【Anyhow】错误向下转型
    【Axum】全局 404 处理
    【Axum】获取查询参数
    【Axum】修改返回状态码
  • 原文地址:https://www.cnblogs.com/zyqBlog/p/5914540.html
Copyright © 2020-2023  润新知