`
lee_3do
  • 浏览: 25728 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

一些常用的数据结构(二):链表

阅读更多

继续。

二.链表

先考虑带头节点的单向链表。

两个类,节点类和链表类。如下:

class ChainNode
{
	friend Chain;
	private:
		int data;
		ChainNode* next;
}
 

class Chain
{
	public:
		Chain(){first=0;}
		~Chain();
		//其他一些,blablabla
	private:
		ChainNode* first;
}

 析构函数:

Chain::~Chain()
{
	while(first)
	{
		ChainNode* temp = first->next;
		delete first;
		first=temp;
	}
}

 查找指定元素:

int Chain:: Search(int x)
{
   ChainNode* temp = first;
   int i=1;
   while(temp)
   {
		if(temp->data==x)
			return i;
		i++;
		temp=temp->next;
   }
   return -1;
}

 删除指定元素:

bool Chain::Delete(int x)
{ 
       int index = Search(x);
	   if(index>0)
	   {
	     if(index==1)
		  first=first->next;
	     else
	     {
		  ChainNode* temp = first;
		  for(int i=1;i<index-1;i++)
		      temp=temp->next;
		  ChainNode* q = temp->next;
		  temp->next=q->next;
		  delete q;
	     }
		 return true;
	   }
	   else
		 return false;
}

 在指定位置后插入元素:

bool Chain::Insert(int index,ChainNode cn)
{
	//非法不判断啦,烦死啦,越界什么的
	temp=first;
	for(int i=1;i<index;i++)
		temp=temp->next;
	cn->next=temp->next;
	temp->next=cn;
	return true;
}

 在链表尾部插入节点:

//链表元素少于两个的情况不判断了。。
ChainNode* temp = first;
ChainNode* temp2 = first->next;
while(temp2)
{
	temp=temp->next;
	temp2=temp2->next;
}
temp->next=cn;

 就地逆置:

 http://lee3do.iteye.com/blog/777239

双向链表不写了,太繁琐了。

分享到:
评论

相关推荐

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

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

    数据结构课程设计:链表的应用

    链表是一种基础且重要的数据结构,它在计算机科学中扮演着至关重要的角色,尤其是在数据结构课程设计中。链表与数组不同,不依赖于连续的内存空间,而是通过节点之间的引用连接来存储数据。这种特性使得链表在处理...

    数据结构:链表.ppt

    链表数据结构 链表是一种基本的数据结构,它是一种线性表的链接存储表示。链表的每个元素(结点)由结点(Node)构成,每个结点包含数据域和链域,链域指向下一个结点。链表的特点是每个元素可以连续或不连续存储,...

    数据结构学习:链表思维导图PDF

    这是我个人在学习数据结构时候所总结的知识思维导图,希望对你们的学习有所帮助

    Java数据结构 线性表,链表,哈希表是常用的数据结构

    Java数据结构 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构

    数据结构课设一:链表实现大数相加

    在这个课设“数据结构课设一:链表实现大数相加”中,我们主要关注的是链表这一基本数据结构以及如何利用它来解决实际问题,即进行大数的相加运算。 链表是一种线性数据结构,与数组不同,它不连续存储元素,而是...

    数据结构:链表的合并与直接插入排序

    本人数据结构课设题目:《链表的合并与直接插入排序》

    数据结构:链表的操作

    这里面包含链表的几乎所有操作:链表的创建、插入、删除、排序等;

    数据结构课程设计链表操作

    本项目提供的"数据结构链表操作.doc"文档很可能包含了对以上操作的详细步骤、代码示例和分析,是学习和理解链表操作的宝贵资源。通过这个课程设计,学生可以深入理解链表的工作原理,掌握链表操作的实现细节,提高...

    数据结构链表的课程设计

    数据结构链表的课程设计 本资源是关于数据结构链表的课程设计,包括了链表的程序源代码。下面是对标题、描述、标签和部分内容的详细解释: 标题:数据结构链表的课程设计 这个标题表明了该资源的主要内容是关于...

    数据结构实验——链表

    数据结构实验——链表 数据结构实验——链表

    数据结构:二叉树链表并遍历输出

    数据结构:二叉树链表并遍历输出

    数据结构:双向链表的基本程序

    数据结构:双向链表的基本程序

    实验二:链表的基本操作的实验报告

    4. 输出链表:`disp_LinkList`函数遍历链表并打印每个元素,方便用户查看链表当前的状态。 第五个知识点是链表的其他辅助函数。例如,`Empty_LinkList`检查链表是否为空,`length_LinkList`计算链表的长度。这些...

    数据结构 作业 链表的操作 完美链表 包括链表的 构造 数值的插入 删除 几种排序。。。。

    数据结构 作业 链表的操作 完美链表 包括链表的 构造 数值的插入 删除 几种排序。。。。

    数据结构:单向链表源码

    单向链表是一种基本的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的引用。在计算机科学和编程领域,理解并能够实现单向链表的源码是至关重要的,因为它是构建更复杂数据结构(如双向链表、循环...

    01基础数据结构之链表

    链表数据结构知识点 ...链表是一种基本的数据结构,它具有动态的存储能力和灵活的插入删除能力,但同时也存在一些缺点,如访问时间复杂度高。因此,在实际应用中,需要根据具体情况选择合适的数据结构。

    《数据结构与算法》课程上机实验二(链表)_链表_fruitd55_C++_数据结构与算法_

    本次上机实验主要关注的是链表,一种常用的数据结构,它在C++中有着广泛的应用。链表不同于数组,其元素不是连续存储的,而是通过指针链接起来,这赋予了链表动态调整大小的能力,以及在插入和删除操作上的优势。 ...

    数据结构-双向链表

    双向链表是一种特殊的数据结构,它在编程中具有重要的应用。本文将深入探讨双向链表的概念,实现,以及如何进行基本操作。 双向链表,顾名思义,是一种链式存储结构,其中每个节点包含两个指针,一个指向前一个节点...

    C++ 数据结构 链表

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

Global site tag (gtag.js) - Google Analytics