C++链表基本操作

转载 2018年04月17日 00:51:33



一、先定义好链表的节点结构

template<class DataType>
struct pNode
{
    DataType data;
    pNode<DataType>* next;
    pNode(DataType d = 0) :data(d), next(NULL)   //在c++中可以在结构中写构造函数
    {}

};

二、链表的基本操作

1.链表的构造

template<class DataType>

class LinkList
{
private:
    pNode<DataType>* head;
public:
    typedef pNode<DataType> Node;
    LinkList():head(NULL)
    {
        sum = sum + nn;
        nn++;
    }
    LinkList(LinkList& l)
    {
        if (l.head)
        {
            pNode<DataType>* p = l.head;
            head = new Node(p->data);
            p = p->next;
            pNode<DataType>* node = head;
            while (p)
            {
                node->next = new Node(p->data);
                node = node->next;
                p = p->next;
            }
        }
        else
            head = l.head;
    }

};

2.链表的尾插

 void PushBack(DataType d)
    {
        if (head == NULL)
        {
            head = new pNode<DataType>(d);
            return;
        }
        else
        {
            pNode<DataType>* ret = head;
            while (ret->next != NULL)
            {
                ret = ret->next;
            }
            ret->next = new pNode<DataType>(d);
        }

    }

3.链表的头插

    void PushFront(DataType d)
    {
            pNode<DataType>* ret = new pNode<DataType>(d);
            ret->next = head;
            head = ret;

    }

4.链表尾删

    void PopBack()
    {
        pNode<DataType>* p = head;
        while (p->next->next)
        {
            p = p->next;
        }
        free(p->next);
        p->next = NULL;

    }

5.链表头删

    void PopFront()
    {
        pNode<DataType>* p = head->next;
        free(head);
        head = p;

    }

6.打印链表

    void PrintList()
    {
        pNode<DataType>* ret = head;
        while (ret != NULL)
        {
            cout << ret->data << "->";
            ret = ret->next;
        }
        printf("NULL\n");

    }

7.获取头部

    pNode<DataType>* GetRoot()
    {
        return head;

    }

8.查找某一节点

    Node* ResearchNode(DataType d)
    {
        Node* cur = head;
        while (cur)
        {
            if (cur->data == d)
                return cur;
            cur = cur->next;
        }
        return NULL;
    }  


    三、总结

        在这里我用C++只实现了链表的一些简单操作,在后续的更新中将会探讨关于链表的其他比较复杂的操作。在这些简单操作中,大家一定要注意细节,否则很容易出现一些低级错误。希望这篇文章对初学C++的同学有所帮助。

c++链表的基本操作

  • 2014年03月12日 22:14
  • 954B
  • 下载

c++ 单链表基本操作

#include #include #include #include #include /*c++实现简单的单链表操作*/ using namespace std; typedef str...
  • cfan0801
  • cfan0801
  • 2012-03-13 21:01:44
  • 25047

c++ 实现双链表基本操作

#include #include #include #include /*c++实现双链表的基本操作*/ using namespace std; typedef struct stude...
  • cfan0801
  • cfan0801
  • 2012-03-13 21:02:57
  • 3965

c++链表基本操作

发布时间:2012 年 10 月 12 日 目的:加强链表操作的熟练度 心的:某些函数实现的确不容易实现,但经过不断地思考,探索其中的规律,终究会实现。要知道欲速则不达!   #inclu...
  • gaoxueyi551
  • gaoxueyi551
  • 2012-10-12 23:04:16
  • 2171

c++学习笔记—单链表基本操作的实现

用c++语言实现的单链表基本操作,包括单链表的创建(包括头插法和尾插法建表)、结点的查找、删除、排序、打印输出、逆置、链表销毁等基本操作。 IDE:vs2013 具体实现代码如下: #includ...
  • xujian_2014
  • xujian_2014
  • 2015-01-14 21:13:09
  • 1388

C++实现链表基本操作

前几天找实习的时候,一个面试官给我留了一个题,做一个链表demo,要求实现创建、插入、删除等操作。 链表是一种常见的数据结构,它是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链...
  • Kevin_zhai
  • Kevin_zhai
  • 2016-01-10 21:56:57
  • 43505

C++实现线性链表的基本操作

C++实现顺序结构线性表的基本操作
  • sinat_34474705
  • sinat_34474705
  • 2017-01-10 13:55:06
  • 2196

C++写链表一些基础的操作

用C++创建链表,这个知识搞了好久,问了无数人,查阅了无数资料,无奈天赋不够,所以至今才有所眉目。 将代码写在这里共后来者参观。毕竟新手,解释我认为写的已经详细了,也为了以后我能更方便的回顾。 代码...
  • wufeifan_learner
  • wufeifan_learner
  • 2017-09-18 21:51:37
  • 374

c++实现单链表基本操作

程序媛决定好好学习写代码 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时...
  • u011200403
  • u011200403
  • 2017-02-13 19:33:22
  • 2290

链表的基本操作函数算法(C/C++实现)

链表的基本操作函数,一般的数据结构的书籍中涉及到的链表的基本操作算法都实现了 #include #include #include using namespace std; typedef...
  • lovemylife1234
  • lovemylife1234
  • 2017-02-09 23:32:04
  • 388
收藏助手
不良信息举报
您举报文章:C++链表基本操作
举报原因:
原因补充:

(最多只允许输入30个字)