码迷,mamicode.com
首页 > 其他好文 > 详细

【线性表5】线性表的链式实现:循环单链表

时间:2017-08-24 01:15:09      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:let   ons   cst   遍历   list.sh   app   end   链式   单循环链表   

简介

循环单链表 是在在单链表的基础上,用最后的一个结点的指针域指向头结点形成的。因此它在逻辑上是一个环形结构。
循环单链表在实际编程中很少用。
 
 
要点:1、遍历结束的标志是 p == 【头结点地址】,而不是p==NULL
          2、表为空的判断标志是:   if( head->next == head   )
          3、在单循环链表中,从任一结点出发都可访问到表中所有结点
 
 
 技术分享

 

 
循环链表一般还使用尾指针rear保存最后一个结点的地址,因为使用尾指针既可以快速找到 最后一个结点,也可以快速找到头结点。
 技术分享

 

简单的代码实现

 

#include<iostream>
#include<cstdlib>
#include<stdexcept>

using namespace std;

struct ListNode
{
    int element;
    ListNode* next;
    
    ListNode(int e=0,ListNode* nxt=0):element(e),next(nxt)
    {
    }
    
};

class CircleList
{
private:
    
    
    ListNode headNode;    //头结点 
    ListNode* p_rear;     //尾结点指针 
    int size;             //表长度 

public:
    CircleList():headNode(0,0),p_rear(0),size(0)
    {
        p_rear = &headNode;        //尾结点指针初始化时也保存头结点的地址 
        headNode.next = &headNode; //形成环 
    }
    
    ~CircleList()
    {
        ListNode * p = headNode.next;
        
        ListNode *t ;
        while( p!= &headNode  )
        {
            t = p;
            p = p->next;
            delete t;    
        }
    }
    
    
    void append(int e)
    {
        ListNode *new_node = new ListNode(e,&headNode);   //新结点创建 ,新结点的next指向头结点。 
        
        p_rear->next = new_node;
        p_rear = new_node;
        size++;
        
    } 
    
    
    void show()const
    {
        ListNode *p = headNode.next;
        cout<<[;
        while(p!=&headNode)
        {
            if(p!=headNode.next) 
                cout<<,;
            cout<<p->element;
            p = p->next;
        }
        cout<<];
    } 
};



int main()
{
    
    CircleList clist;
    
    clist.append(12);
    clist.append(13);
    clist.append(14);
    clist.append(15);
    clist.append(16);
    clist.show();


} 

 

 

 

【线性表5】线性表的链式实现:循环单链表

标签:let   ons   cst   遍历   list.sh   app   end   链式   单循环链表   

原文地址:http://www.cnblogs.com/lulipro/p/7420936.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!