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;
    }
  • 相关阅读:
    华为平板暴力禁用wifi
    传输层与数据层架构一二谈
    内外网访问控制设计
    机房通信网设计
    list add元素覆盖之前元素问题思考
    IIS8无法调用Oracle.DataAccess .dll问题
    线程令牌
    Socket解决粘包问题2
    Socket解决粘包问题1
    Socket异步通信学习三
  • 原文地址:https://www.cnblogs.com/hgonlywj/p/4842545.html
Copyright © 2011-2022 走看看