`

C++数据结构--链表

 
阅读更多

用C++ 实现链表:

首先功能分析: 构造,清理,增删改查,求大小 判断空 ,取头取尾

  

#include <iostream> 
using namespace std; 
 
typedef int T; 
//链表类 
class LinkedList 
{ 
    struct Node 
    { 
        T data; 
        Node* next; 
        Node(const T& t):data(t),next(NULL) 
        { 
        } 
    }; 
public: 
    //构造  析构  清空 
    LinkedList():head(NULL) 
    { 
    } 
     
    ~LinedList() 
    { 
        clear(); 
    } 
 
    void clear() 
    { 
     
    } 
    //增(insertBack insertFront)删改查(find) 
    void insertFront(const T& t) 
    { 
    } 
    void insertBack(const T& t) 
    { 
    } 
    void erase(const T& t) 
    { 
    } 
    void update(const T& t,const T& target) 
    { 
    } 
    unsigned int  find(const T& t) 
    { 
        unsigned int position=0; 
        return position; 
    } 
    //判断empty 求size  遍历(travel) 
    bool empty() 
    { 
    } 
    unsigned int size() 
    { 
        int size=0; 
        return size; 
    } 
     
    void travel() 
    { 
    } 
    //取头 取尾   
    T getHead() 
    { 
    } 
    T getTail() 
    { 
 
    } 
    //去指定位置取指针  辅助作用 
    Node* getPointer(int position) 
    { 
        return NULL; 
    } 
private: 
    //头指针 最重要的部分 
    Node* head;  
}; 
 
int main() 
{ 
} 

 

功能添加:

  

#include <iostream> 
using namespace std; 
 
typedef int T; 
//链表类 
class LinkedList 
{ 
    struct Node 
    { 
        T data; 
        Node* next; 
        //初始化data next 阻止垃圾数据 
        Node(const T& t=T()):data(t),next(NULL) 
        { 
        } 
    }; 
public: 
    //构造  析构  清空 
    LinkedList():head(NULL) 
    { 
    } 
    ~LinkedList() 
    { 
        clear(); 
    } 
 
    void clear() 
    { 
        Node *p=head; 
        while (p!=NULL) 
        { 
            Node *q = p->next; 
            delete p;//释放p所在空间 
            p=q; 
        } 
    } 
    //判断empty 求size  遍历(travel) 
    bool empty() 
    { 
        //判断头指针是否为空 为空表示链表不存在 
        return head==NULL ? true : false; 
    } 
    unsigned int size() 
    { 
        unsigned int size=0; 
        Node* p =head; 
        while (p!=NULL) 
        { 
            size++; 
            pp=p->next; 
        } 
        return size; 
    } 
 
    void travel() 
    { 
        //利用while循环一次次的输出来,直到指针为NULL结束 
        Node* p = head; 
        while (p!=NULL) 
        { 
            cout<<p->data<<endl; 
            pp=p->next; 
        } 
    } 
    //增(insertAfter insertFront)删改查(find) 
    void insertFront(const T& t) 
    { 
        Node* p = new Node(t); 
        p->next=head;  //讲头指针所指向的地址给p的next 
        head = p;       //让*p作为头 
    } 
    void insertAfter(const T& t) 
    { 
        Node *p = new Node(t); 
        Node *tail = getPointer(size()-1); 
        tail->next = p; 
    } 
    void erase(const T& t) 
    { 
        unsigned int position = find(t); 
        Node* cur = getPointer(position); 
        if (position!=0) 
        { 
            Node* pre = getPointer(find(t)-1); 
            pre->next = cur->next; 
        }else{ 
            head = cur->next; 
        } 
        delete cur; 
    } 
    void update(const T& t,const T& target) 
    { 
        Node *p=getPointer(find(target)); 
        p->data=t; 
    } 
    unsigned int  find(const T& t) 
    { 
        unsigned int position=0; 
        Node* p = head; 
        while(p!=NULL) 
        { 
            if (p->data==t) 
            { 
                return position; 
            } 
            pp=p->next; 
            position++; 
        } 
        return position; 
    } 
     
    //取头 取尾   
    T getHead() 
    { 
        return head->data; 
    } 
    T getTail() 
    { 
        Node *p=getPointer(this->size()-1); 
        return p->data; 
    } 
    //去指定位置取指针  辅助作用 
    Node* getPointer(int position) 
    { 
        Node* p =head; 
        for(int i = 0;i<position;i++) 
        { 
            pp=p->next; 
        } 
        return p; 
    } 
private: 
    //头指针 最重要的部分 
    Node* head;  
}; 
 
int main() 
{ 
} 

 

分享到:
评论

相关推荐

    严蔚敏-数据结构--链表实现c++实现

    在《严蔚敏-数据结构》一书中,作者深入浅出地讲解了链表的概念及其C++实现。这里我们将详细探讨链表的原理、C++中的链表实现以及相关知识点。 链表与数组不同,它不连续存储元素,而是通过节点间的指针连接形成...

    c/c++数据结构-线性表-链表

    数据结构实验线性表当中的链表结构实现,带有详细注释,小白也能看得懂

    C++(数据结构):链表

    C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 C++(数据结构):链表 ...

    数据结构-基本算法-静态链表

    数据结构-基本算法-静态链表(学生时代源码,调试可运行)

    C++数据结构 -- 队列

    在C++中实现队列,我们可以使用标准模板库(STL)中的`queue`容器,或者自定义数据结构来模拟队列的行为。本节将深入探讨C++中队列的实现与应用。 一、C++标准库中的`queue`容器 C++ STL中的`&lt;queue&gt;`头文件提供了...

    C++ 数据结构 链表

    本文将深入探讨C++中的三种关键链表数据结构:单链表、循环链表和双向链表,以及如何通过面向对象编程来实现它们。 1. **单链表**: 单链表是最基础的链式数据结构,每个节点包含一个数据元素和一个指向下一个节点...

    c++算法集-排序-链表-图-队列-二叉树实现

    "c++算法集-排序-链表-图-队列-二叉树实现"这个压缩包包含了C++语言实现的一些核心数据结构和算法,这些都是计算机科学的基础。 首先,我们来详细探讨排序算法。排序是计算机科学中最基本的操作之一,它涉及将一组...

    C++ 数据结构书籍 - 清华大学 - 邓俊辉 - 严蔚敏

    在学习过程中,读者应结合C++数据结构 - 清华书籍中的实例代码进行练习,这将有助于深化理解,提升编程技巧。同时,两本书中的习题和案例是检验和巩固学习成果的重要手段,通过反复的实践和思考,可以逐步建立起对...

    数据结构-严蔚敏C++

    严蔚敏教授的《数据结构》不仅涵盖了以上的基本概念,还深入讨论了这些数据结构在C++中的实现,以及如何通过算法优化来提升性能。学习这门课程,不仅可以掌握数据结构的理论知识,还能提升编程能力,为后续的软件...

    数据结构-链表相关操作函数(C++语言实现).html

    介绍了数据结构中链表的构建,遍历,求表长,插入以及删除等基本操作,并用c++语言对其进行了功能实现。

    c++多项式--循环链表

    总结来说,"C++多项式--循环链表"的主题涵盖了数据结构(循环链表)、运算符重载以及在VS2005环境下编写C++代码的技巧。通过循环链表来表示多项式,可以方便地进行加减乘等运算,同时利用运算符重载使代码更具表达性...

    一、基础数据结构-1.链表-2.静态链表

    一、基础数据结构-1.链表-2.静态链表

    C++数据结构-二叉树和线索二叉树

    添加、删除、拷贝、清空、树深度计算、父节点、兄弟节点获取、先中后序递归及非遍历、按层次遍历、中序迭代器(非递归算法)、节点查找、先序和中序序列重建二叉树、数组和二叉链表存储结构相互转换。使用模板偏特化...

    数据结构C++链表

    在C++中,链表是一种常见的数据结构,它不同于数组,不需要连续的内存空间来存储元素。本项目专注于C++实现的单链表,提供了一个完整的可运行示例,包括`main.cpp`主程序,以及`linklist.h`和`node.h`两个头文件,...

    C++数据结构与算法 (第4版)

    根据提供的文件信息,这里主要关注的是“C++数据结构与算法(第4版)”这一主题,虽然实际内容并未给出具体章节或知识点,但我们可以基于标题、描述以及部分已知内容来推测书中可能涵盖的关键知识点。 ### C++数据...

    数据结构 -- 链表的基本操作

    链表是一种基础且重要的数据结构,它在计算机科学中扮演着关键角色,特别是在处理动态数据集合时。在数据结构的世界里,链表不同于数组,它不是连续存储元素,而是通过节点之间的指针链接来实现数据的组织。接下来,...

    C/C++-数据结构-图书管理系统-课程设计-大学生课设

    大一学期作业C语言-数据结构开发非常简单的图书管理系统,可以帮助学习单链表操作。 分为: C版本---DevC++打开 C++版本-----VS打开 主页面如下: 欢迎使用图书管理系统(管理员:admin 密码:password) 1.管理...

    数据结构 线性表和链表 c++实现

    总结来说,"数据结构 线性表和链表 c++实现"这一主题涵盖了基础数据结构的理论和实践,包括顺序表和链表的概念、优缺点以及在C++中的面向对象实现。通过理解这些内容,开发者可以更好地设计和优化算法,解决实际问题...

    C++数据结构-线性表及相关查找排序算法

    C++模板类实现的动态数组、双向循环链表、队列、栈等数据结构,以及基于迭代器的静态查找和排序算法,包括顺序查找、折半查找、简单选择排序(用于单向迭代器)、快速排序(双向迭代器)、堆排序(随机迭代器)。...

    链表的c++实现 数据结构 链表的c++实现

    在C++中实现链表可以帮助我们更好地理解和掌握这种数据结构。链表不同于数组,它不连续存储元素,而是通过节点之间的指针链接来组织数据。每个节点包含两部分:数据元素和指向下一个节点的指针。 ### 1. 链表的基本...

Global site tag (gtag.js) - Google Analytics