zoukankan      html  css  js  c++  java
  • 单项链表逆序


    版权所有,转载请标明出处!


    程序1:

    //
    //  main.cpp
    //  testC++06ReverseSingleLinkedList
    //
    //  Created by fei dou on 12-8-9.
    //  Copyright (c) 2012年 vrlab. All rights reserved.
    //
    
    #include <iostream>
    using namespace std;
    
    typedef struct node{
        char data;
        node * next;
    }Node;
    
    /*从头插入链表*/
    inline void insertIntoListFromHead(char data, Node* (&head))
    {
        Node *newNode = new Node();
        newNode -> data = data;
        newNode -> next = head;
        head = newNode;
    }
    
    /*翻转链表*/
    Node * reverseSingleLinkedList(Node *head);
    void printList(Node *head);
    
    void printList(Node *head)
    {
        while(head)
        {
            cout << head -> data << "   ";
            head = head -> next;
        }
    }
    
    
    /*完成单项链表的逆序操作*/
    Node * reverseSingleLinkedList(Node *head)
    {
        Node *newHead = NULL;
        while (head)
        {
            Node *headNext = head -> next;          //保存head下一个节点
            head -> next = newHead;                 //从头插入新的反向链表中
            newHead = head;                         //从头插入新的反向链表中
            head = headNext;                        //head重新指向还没有反向的链表的头部
        }
        return newHead;
    }
    
    
    int main (int argc, const char * argv[])
    {
    
        Node *listHead = NULL;
        for (char ch = 'f'; ch >= 'a'; --ch)
            insertIntoListFromHead(ch, listHead);
        cout << "原始列表内容是:" <<endl;
        printList(listHead);
        listHead = reverseSingleLinkedList(listHead);
        cout << endl << "逆序后的结果是:" << endl;
        printList(listHead);
        cout << endl;
        /*释放空间*/
        while (listHead)
        {
            Node *delNode = listHead;
            listHead = listHead -> next;
            delete  delNode;
            delNode = NULL;
        }
        return 0;
    }

    程序2:

    //
    //  main.cpp
    //  testC++06ReverseSingleLinkedList
    //
    //  Created by fei dou on 12-8-9.
    //  Copyright (c) 2012年 vrlab. All rights reserved.
    //
    
    #include <iostream>
    using namespace std;
    
    typedef struct node{
        char data;
        node * next;
    }Node;
    
    /*从头插入链表*/
    inline void insertIntoListFromHead(char data, Node* (&head))
    {
        Node *newNode = new Node();
        newNode -> data = data;
        newNode -> next = head;
        head = newNode;
    }
    
    /*从头插入链表*/
    inline void insertIntoListFromHead(Node *insertNode, Node* (&head))
    {
        if (!insertNode) return;
        insertNode -> next = head;
        head = insertNode;
    }
    
    /*翻转链表*/
    Node * reverseSingleLinkedList(Node *head);
    void printList(Node *head);
    
    void printList(Node *head)
    {
        while(head)
        {
            cout << head -> data << "   ";
            head = head -> next;
        }
    }
    
    
    /*完成单项链表的逆序操作*/
    Node * reverseSingleLinkedList(Node *head)
    {
        Node *newHead = NULL;
        while (head)
        {
            Node *headNext = head -> next;          //保存head下一个节点
            insertIntoListFromHead(head, newHead);  //从头插入到逆序链表中
            head = headNext;                        //head重新指向还没有反向的链表的头部
        }
        return newHead;
    }
    
    
    int main (int argc, const char * argv[])
    {
        
        Node *listHead = NULL;
        for (char ch = 'f'; ch >= 'a'; --ch)
            insertIntoListFromHead(ch, listHead);
        cout << "原始列表内容是:" <<endl;
        printList(listHead);
        listHead = reverseSingleLinkedList(listHead);
        cout << endl << "逆序后的结果是:" << endl;
        printList(listHead);
        cout << endl;
        /*释放空间*/
        while (listHead)
        {
            Node *delNode = listHead;
            listHead = listHead -> next;
            delete  delNode;
            delNode = NULL;
        }
        return 0;
    }

    程序3:

    //
    //  main.cpp
    //  testC++06ReverseSingleLinkedList
    //
    //  Created by fei dou on 12-8-9.
    //  Copyright (c) 2012年 vrlab. All rights reserved.
    //
    
    #include <iostream>
    using namespace std;
    
    typedef struct node{
        char data;
        node * next;
    }Node;
    
    /*从头插入链表*/
    inline void insertIntoListFromHead(char data, Node* (&head))
    {
        Node *newNode = new Node();
        newNode -> data = data;
        newNode -> next = head;
        head = newNode;
    }
    
    /*从头插入链表*/
    inline void insertIntoListFromHead(Node *insertNode, Node* (&head))
    {
        if (!insertNode) return;
        insertNode -> next = head;
        head = insertNode;
    }
    
    /*翻转链表*/
    Node * reverseSingleLinkedList(Node *head);
    void printList(Node *head);
    
    void printList(Node *head)
    {
        while(head)
        {
            cout << head -> data << "   ";
            head = head -> next;
        }
    }
    
    
    /*完成单项链表的逆序操作*/
    Node * reverseSingleLinkedList(Node *head)
    {
        if (head == NULL || head -> next == NULL) return  head;
        Node * subReversedList = reverseSingleLinkedList(head -> next);
        head -> next -> next = head;
        head -> next = NULL;
        return subReversedList;
    }
    
    
    
    int main (int argc, const char * argv[])
    {
        
        Node *listHead = NULL;
        for (char ch = 'f'; ch >= 'a'; --ch)
            insertIntoListFromHead(ch, listHead);
        cout << "原始列表内容是:" <<endl;
        printList(listHead);
        listHead = reverseSingleLinkedList(listHead);
        cout << endl << "逆序后的结果是:" << endl;
        printList(listHead);
        cout << endl;
        /*释放空间*/
        while (listHead)
        {
            Node *delNode = listHead;
            listHead = listHead -> next;
            delete  delNode;
            delNode = NULL;
        }
        return 0;
    }
    

    上面三个程序相信都能读懂,这里不在进行解释

  • 相关阅读:
    蘑菇街
    康拓展开
    CSS学习笔记
    专业名词
    专业名字
    01背包问题
    将bbr功能合入到centos7.3
    How to Identify User&Password of DataBase safely in SQL statement?
    tips for private constructor
    all Key Word of C#
  • 原文地址:https://www.cnblogs.com/dancingrain/p/3405244.html
Copyright © 2011-2022 走看看