美文网首页
采用尾指针表示的单链表

采用尾指针表示的单链表

作者: wildsre | 来源:发表于2016-09-20 17:01 被阅读0次
/*
 * 单链循环链表:终点的指针域改为指向头节点
 * 采用尾指针表示单链循环表:查找开始节点和终端节点都很方便
*/

#include<iostream>
using namespace std;

class Chain;
class Node{
    friend class Chain;
private:
    char  _data;
    Node* _next;
};

class Chain{
public:
    Chain();
    bool Find(int i, Node*& x);
    bool Insert(int i, char& x);
    bool Delete(char x);
    ostream& display( ostream &out );
    friend ostream& operator << (ostream &out, const Chain &x);

private:
    Node* _head;
    int   _length;
    Node* _raear;
};

Chain::Chain()
{
    _head = new Node;
    _head->_next = _head;
    _length=0;
}

bool Chain::Find(int i, Node*& x){
    if(i<0 || i>_length) {cout << "out of index..." << endl; return false;}
    Node* p = _head;
    while(i--)  p=p->_next;
    x = p;
    return true;
}

bool Chain::Insert(int i, char& x){
    Node* pre_node; //store the address of node i-1
    if(Find(i, pre_node)==false) return false;
    Node* tmp = new Node;
    tmp->_data = x;
    tmp->_next = pre_node->_next;
    pre_node->_next= tmp;
    if(tmp->_next== _head) _raear = tmp;   //updata _raear
    _length++;
    return true;
}

ostream& Chain::display(ostream &out){
    //IsEmpty?
    int i= _length;
    if(i==0) return out;
    Node* p = _head->_next;
    while(--i){ cout << p->_data; p=p->_next;}
    return out;
}

ostream& operator<< (ostream &out, Chain &chain){
    chain.display(out);
    return out;
}

int main(){
char str[] = "su fang";
Chain w;
for(int i=0; str[i] != 0; i++)
    w.Insert(i, str[i]); 
cout << "input: " << str << endl;
cout << w << endl;
    return 0;
}


相关文章

  • 采用尾指针表示的单链表

  • 02单项循环链表

    [toc] 循环链表 循环链表 就是在单链表的基础上修改而来 单链表是将尾结点的指针指向NULL,循环链表是将尾结...

  • [数据结构]第二章线性表(3)——单链表

    单链表 什么是单链表? 单链表的定义 别名 注释:或者可以理解为指向头节点的指针既可以表示整个单链表也可以表示头节...

  • 数据结构之线性表(下)

    单链表:通过指针连接的线性表 没有指针的语言如果表示链表?答案是静态链表,静态链表用数组表示,使用元素的物理位序来...

  • 数据结构课程 第四周 线性表--链式表循环链表

    循环链表更多的使用带尾指针的链表如果经常访问头尾指针,带尾指针的更方便 双向链表 双向链表的插入 双向链表的删除 ...

  • 算法--链表相关套路

    链表 链表题一般常考 定义 单链表:一个节点 + 指向下一个节点的指针 头指针:第一个节点,head 尾指针:最后...

  • 2018-09-13

    用c语言创建单链表,参数采用二级指针。 源码如下: //单链表头插法创建 #include #include #d...

  • 数据结构之链表笔记

    前言 其实链表的心法就是“指针的操作” 单链表 单链表的结点包括:data(数据)、next指针next指针就是指...

  • 数据结构 — 循环链表

    单链表的局限 单链表可以用于表示任意的线性关系,但有些线性关系是循环的,即没有队尾元素的 循环链表的定义 将单链表...

  • 循环链表定义及操作

    循环链表定义 定义与单链表一样,操作时将末结点的指针指向开始结点即可 循环链表操作 初始化循环链表 插入(尾插) ...

网友评论

      本文标题:采用尾指针表示的单链表

      本文链接:https://www.haomeiwen.com/subject/tveoettx.html