zoukankan      html  css  js  c++  java
  • 华为面试题——单向链表倒转(一次遍历)

    /*
        Blog:
            http://blog.csdn.net/jiangxinnju
        function:
        将单向链表reverse,如ABCD变成DCBA,只能搜索链表一次
    */
    #include <iostream>

    using namespace std;
    struct node
    {
        char data;
        struct node *next;
    };
    typedef struct node NODE;
    void test_exercise006()
    {
        NODE *head = new NODE; //建立附加头结点
        head->next = NULL;

        /*创建链表*/
        NODE *current,*previous;
        previous = head;
        char input;
        cout << "Input your list table NODE data,end with '#':";
        cin >> input;
        while(input != '#')
        {
            current = new NODE;
            current->data = input;
            current->next = NULL;
            previous->next = current;
            previous = previous->next;
            cout << "Input your list table NODE data,end with '#':";
            cin >> input;
        }

        /*输出链表*/
        current = head->next;
        while(current != NULL)
        {
            cout << current->data << " ";
            current = current->next;
        }
        cout << endl;

        /*倒转链表*/
        current = head->next;
        NODE *p = current->next;
        NODE *q = p->next;
        while(q != NULL)
        {
            p->next = current;
            current = p;
            p = q;
            q = q->next;
        }
        p->next = current;
        current = p;
        head->next->next = NULL;
        head->next = current;

        /*输出链表*/
        current = head->next;
        while(current != NULL)
        {
            cout << current->data << " ";
            current = current->next;
        }
    }


  • 相关阅读:
    C++ const
    facebook hacker cup 2013资格赛第二题
    最大全1子矩阵
    java HashMap的keyset方法
    树状数组
    Java entry
    一个数学证明:1(1x1)(1x2)...(1xn)<=x1+x2+...+xn, xi在[0,1]
    传教士野蛮人过河问题python
    在cmd中为命令设置别名以及启动cmd时自动执行bat
    合取Λ,析取V,容易记混吗?
  • 原文地址:https://www.cnblogs.com/jiangxinnju/p/5516889.html
Copyright © 2011-2022 走看看