zoukankan      html  css  js  c++  java
  • 5--链表输出

    /*
    题目:
    (1)首先写出单链表
    (2)对链表进行方向输出
    
    解题思路:
    (a)使用stack,后进先出的策略。
    (b)递归
    
    
    */
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <stack>
    #include <iostream>
    using namespace std;
    
    typedef struct ListNode
    {
        int m_nValue;
        struct ListNode *m_pNext;
    } lNode;
    
    void listAddNode(lNode *head)
    {
        lNode *p = head, *p_Inter = NULL;
    
        if (!(p_Inter = ((lNode *)malloc(sizeof(lNode)))))
        {
            printf("the memery is don't create it
    ");
            return;
        }
        p_Inter->m_pNext = NULL;
    
        int data;
        printf("请输入数字:
    ");
        scanf_s("%d", &data);
        p_Inter->m_nValue = data;
    
        while (p->m_pNext != NULL)
        {
            p = p->m_pNext;
        }
    
        p->m_pNext = p_Inter;
    
    }
    
    lNode* createList(lNode *head)
    {
        if (!(head = ((lNode *)malloc(sizeof(lNode)))))
        {
            printf("the memery is don't create it
    ");
            return NULL;
        }
        head->m_pNext = NULL;
        int data;
        printf("请输入数字:
    ");
        scanf_s("%d", &data);
        head->m_nValue = data;
    
    
        lNode *p = head, *p_Inter = NULL;
        char X_cin = 'Y';
        while (true)
        {
            printf("是否继续添加:N/n 
    ");
            cin >> X_cin;
    
            if (X_cin == 'y' || X_cin == 'Y')
            {
                ;
            }
            else if (X_cin == 'N' || X_cin == 'n')
            {
                return head;
            }
            else
            {
                ;
            }
    
            listAddNode(p);
    
        }
    
    }
    
    void showList(lNode *head)
    {
        if (NULL == head)
        {
            cout << "list is empty 
    " << endl;
            return;
        }
    
        lNode *p = head;
    
        while (p != NULL)
        {
            printf("%d
    ", p->m_nValue);
            p = p->m_pNext;
        }
    
    }
    
    void reversePut(lNode *point)
    {
        stack <int> stack_rev;
        
        lNode *p = point;
    
        while (p != NULL)
        {
            stack_rev.push(p->m_nValue);
            p = p->m_pNext;
        }
        while (!stack_rev.empty())
        {
            cout << stack_rev.top() << endl;
            stack_rev.pop();
        }
    }
    
    
    
    int main()
    {
        lNode *head = NULL;
    
        head = createList(head);
        showList(head);
        reversePut(head);
        
        return 0;
    }
  • 相关阅读:
    7、配置私有仓库
    springcloud服务调用 list集合解析错误处理方法
    Mybatis-Plus 条件构造器的使用
    Mybatis-Plus 自定义sql
    Navicat Premium 15 安装与激活
    使用阿里云短信验证
    vue+element 表单el-radio单选框回显不能被选中问题
    类似性别(0、1)判断的table列表数据渲染
    使用docker 简单部署 ElasticSearch 以及 ElasticSearch-Head
    docker 配置镜像加速
  • 原文地址:https://www.cnblogs.com/hgonlywj/p/4842545.html
Copyright © 2011-2022 走看看