m0_62660587 2022-03-27 17:54 采纳率: 78.6%
浏览 27
已结题

c++的相关问题,会的看看

c++怎么历遍输出带头结点的循环单链表的所有结点,用递归算法怎么解决,麻烦给给思路,谢谢

  • 写回答

2条回答 默认 最新

  • qfl_sdu 2022-03-27 17:56
    关注

    记录头结点位置,当节点循环到头结点的时候结束递归即可。

    img

    代码如下:

    #include <iostream>
    using namespace std;
    typedef struct _node
    {
        int data;
        struct _node* next;
    }LinkNode;
    
    //递归显示
    void showList(LinkNode* head)
    {
        static LinkNode* node = 0;
        if(node == 0)
        {
            node = head;
            head = head->next;
        }
        if(node == head)
            return;
        else
        {
            if(head == node->next)
                cout << head->data;
            else
                cout << " "<<head->data;
            head = head->next;
            showList(head);
        }
    }
    
    
    
    int main()
    {
        LinkNode* head,*p,*t;
        int i,n;
        head = new LinkNode;
        head->next = 0;
    
        p = head;
        //输入n
        cin >> n;
        for(i=0;i<n;i++)
        {
            t = new LinkNode;
            t->next = 0;
            cin >> t->data; //输入数据
            p->next = t;
            p = t;
        }
        //构建循环链表
        p->next = head; //尾结点链接到头结点
        showList(head);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月28日
  • 已采纳回答 3月27日
  • 创建了问题 3月27日