`
chentingk
  • 浏览: 20268 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

C++链表的类定义

 
阅读更多

  作为离散型的抽象数据类型存储的一种数据结构,链表可谓是使用率较高的。链表其实就是如数组一样顺序存储,只不过在内存中不是连续的一串数据而是离散的。数据的连接靠的是指针的指向。

  言归正传,此处介绍简单单链表的类定义.

  链表由两个类的复合方式来构成,一个类有两个属性,一个类中有对链表的操作(增,删,查,改)

 

class list
{
  private:
        int date;
        list *link;
};

 

class node
{
private:
	listnode *first,*last;
public:
	node();
	~node();
	void add(int x);
	void print();

};

  第一个类中存在两个属性,一个是存储数据的数据域,另一个是指向下一个节点的指针域;

为了这两个类的复合,必须使用友元类。在class list里面定义friend node,定义友元主要是为了可以在node类中可以使用list的私有成员。

  这里引用int做例子做一个整形的链表,可以使用模板来定义抽象数据类型存储。所有操作中,最难的就是节点的建立和删除,这里介绍新建节点的两个方法,头插法和尾插法。

头插法:

  只用一个first指针就能实现,具体功能是:汉诺塔的模型。先进去的是在尾部,后进去的在头部。

  first最初定义为空,待需要插入的时候,新建节点,newnode->link=first,first=newnode,这两句话的意思就是新建节点的指针域指向first,再把first指向newnode,就实现了头插法。只要把传入的x赋给date就可以实现头插法倒叙存储了,这是不是有点和我们平时喜欢的顺序不一样呢?接下来我们介绍尾插法。

  尾插法就是一个离散的顺序表,就像是一个数组一样,内存离散,但是是顺序存储。

  尾插法需要first和last两个指针来实现。

 

//在尾部进行添加
	void add(int x)
	{
		listnode *p=new listnode;
		if(first==0)
		{
			p->date=x;
			p->link = NULL;
			first = last = p;
		}
		else
		{
			p->date=x;
			last->link = p;
			last = p;
			last->link = NULL;
		}

 当其为空表的时候,first和last同时指向新节点p,如果不是空表,则通过last来连接节点。

在写链表的时候最好辅助画图理解。

分享到:
评论

相关推荐

    双向链表.cpp 双向链表类定义及测试代码 c++

    双向链表类定义及测试文件 对应于数据机构与算法分析(c++版)第三版或第二版 Clifford A.Shaffer 重庆大学使用教材

    C++ 链表类模板 清华大牛精心编写

    链表是一种常用的数据结构,它在C++编程中扮演着重要的角色。相对于数组,链表在动态内存管理和数据插入删除方面具有优势。...无论你是初学者还是有经验的开发者,都应该好好利用这份资料,加深对C++链表的理解。

    C++链表类源代码(带头文件) 新的

    总的来说,这个压缩包提供了一个通用的C++链表类实现,利用模板实现了泛型链表,可以处理各种数据类型。它包含了头文件和源文件,使得在多文件项目中能够正确地编译和链接,为学习和使用C++链表提供了便利。对于理解...

    C++链表类代码(自己写的)

    本文将详细解析一个自编的C++链表类代码,该类利用模板实现,提供了添加、删除、修改和查找等基本操作。 首先,我们来看“MyList.h”这个头文件,它很可能包含了链表类的定义。在C++中,链表通常通过节点(Node)...

    链表类 c++ 实现的 链表类 c++ 实现的

    在C++中,我们可以使用结构体或类来定义链表节点。 1. **链表节点定义**: 首先,我们需要定义一个链表节点类(或结构体),它包括一个数据成员和一个指向下一个节点的指针。例如: ```cpp struct ListNode { ...

    用类的方式实现C++链表功能

    本教程将介绍如何使用类的方式来实现一个简单的C++链表,包括链表的创建、插入、删除、修改和查找操作。下面我们将详细探讨这些知识点。 首先,链表的核心是链表节点,通常我们定义一个结构体或类来表示节点,它...

    C++链表类源代码(带头文件)

    这里我们讨论的资源是"C++链表类源代码(带头文件)",它提供了单链表的实现,包括一些基本操作。源代码包含两个文件:LinkedList.cpp 和 LinkedList.h。 首先,`LinkedList.h` 文件通常是头文件,它定义了链表类的...

    C++链表基于类实现多项式的加法和乘法

    在C++中,我们可以定义一个名为`Node`的结构体或类,如下所示: ```cpp struct Node { int coefficient; // 系数 int exponent; // 指数 Node* next; // 指向下一个节点的指针 }; ``` 接下来,定义`Polynomial`...

    C++链表的具体实现,很详细

    ### C++链表的具体实现详解 #### 一、引言 在计算机科学中,链表是一种常见的数据结构,用于存储一系列元素。与数组不同的是,链表中的元素并不一定存储在连续的内存位置上,而是通过节点之间的链接来组织。每个...

    c++链表编程实现代码

    `c++链表.txt`文件可能包含了这些链表实现的详细代码,通过学习和理解这些代码,你可以深入了解链表的工作原理,并能熟练地在C++中实现和操作链表。记得在编写链表代码时要考虑到内存管理,确保正确地分配和释放内存...

    支持类模版的C++双向链表

    在这个“支持类模版的C++双向链表”中,我们将探讨如何利用C++的模板特性来实现一个灵活且高效的双向链表,并应用到实际的排序算法中。这个实现适用于VC 6.0和VS2008等编译器。 首先,类模版是C++中的一种泛型编程...

    C++ 链表的实现

    2. C++类和对象:定义类、声明成员函数、构造函数、析构函数。 3. 动态内存管理:`new` 和 `delete` 的使用。 4. 指针操作:指针的赋值、解引用、比较等。 5. 链表操作:插入、删除、查找、遍历等。 6. 文件组织:...

    数据结构C++链表

    本项目专注于C++实现的单链表,提供了一个完整的可运行示例,包括`main.cpp`主程序,以及`linklist.h`和`node.h`两个头文件,分别用于定义链表类和节点类。 首先,`node.h`头文件通常会包含链表节点的定义。一个...

    c++链表的基本操作

    本主题将深入探讨C++中的链表基础操作,包括链表的定义、创建、遍历、插入、删除等核心概念。 链表不同于数组,它的元素(节点)在内存中不是连续存储的,而是通过指针链接。每个节点包含两部分:数据域和指针域。...

    C++链表基本操作.doc

    首先,链表的节点结构定义如下: ```cpp struct Node{ int num; Node *next; }; ``` 其中,`num` 是节点存储的数据,`next` 是指向下一个节点的指针。 1. **链表创建**: 函数 `Create()` 负责创建链表。它从...

    c++链表string类程序

    在C++中,我们通常通过定义一个结构体或类来表示链表节点,例如: ```cpp struct ListNode { std::string data; ListNode* next; }; ``` 链表操作包括插入、删除、遍历等,都需要通过指针操作来完成。 3. **...

    c++链表实现以及简易学生管理系统例子

    在C++中,我们通常使用结构体或类来定义链表的节点。例如: ```cpp struct ListNode { int data; // 存储数据 ListNode* next; // 指向下个节点的指针 }; ``` 接下来,我们创建链表的头节点,并提供插入、删除、...

    C++链表的反转

    ### C++链表的反转知识点解析 #### 一、链表基本概念 链表是一种常见的数据结构,由一系列节点组成,每个节点包含数据域和指向下一个节点的指针。链表分为单向链表(本例中使用)和双向链表。 #### 二、链表的创建...

    c++链表操作程序

    链表是一种重要的数据结构,在C++编程中,它被广泛用于处理动态数据集合。相比于数组,链表在插入和删除元素时具有更高的灵活性,因为它们不需要预先分配固定的内存空间。本压缩包包含四个文件,9_6.cpp、9_7.cpp、9...

    链表类 实现对不同数据的链表操作

    在描述中提到了“排序插入”,这可以通过在链表类中定义一个`sort_insert`方法来实现。为了进行排序,我们需要比较节点的数据。由于链表可能包含多种类型的数据,我们可以要求插入的数据必须支持`__lt__`方法(小于...

Global site tag (gtag.js) - Google Analytics