`
weihe6666
  • 浏览: 443086 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C++ 单链表

    博客分类:
  • C++
阅读更多
//LinkList.h
//Define the Node of Link
struct	List
{
	int Data;
	struct List *Next; 
};

typedef struct List Node;
typedef Node *Link;

class LinkList
{
public:
    LinkList();
	~LinkList();
	//The method of the class
	bool InitList();
	bool DestoryList();
	bool ClearList();
	bool IsEmpty();
	bool InsertNode(int Data);
	bool SetNodeData(int Data_old,int Data_new);
	void PrintLink();	
	bool DeleteNode(int Data);
private:
	Link m_Link;
	int m_Data;
};




//LinkList.cpp
#include <iostream>
using namespace std;

#include "LinkList.h"

//The method of class LinkList
LinkList ::LinkList()
{
  m_Link = NULL;
  m_Data = 0;

  InitList();
}

LinkList ::~LinkList()
{
  if(!DestoryList())
  {
	  DestoryList();
  }

}

bool LinkList::InitList()
{
	//初始化一个新的节点
	if(!(m_Link = new Node()))
     return false;
	else
	{
		m_Link->Next = NULL;
		return true;
	}
}

bool LinkList ::InsertNode(int Temp_Data)
{
  Link New ;
  Link Pointer;
  New = new Node();
  New->Data = Temp_Data;
  New->Next = NULL;
 
  if(m_Link->Data == 0)
  {
	 m_Link->Data = Temp_Data;
  }
  else
  {
	   Pointer = m_Link;
	  while(Pointer->Next != NULL)
	  {
		  Pointer = Pointer->Next;
	  }
	  Pointer->Next = New;
  }
return true;
}

bool LinkList::IsEmpty()
{
	if(m_Link != NULL)
		return false;
	else
	   return true;
}

bool LinkList::SetNodeData(int Data_old,int Data_new)
{
	Link Pointer;
	Pointer = m_Link;
	if(!IsEmpty())
	{
     while(Pointer != NULL)
	 {
		 if(Pointer->Data == Data_old)
		 {
			 Pointer->Data = Data_new;
			 break;
		 }
		 Pointer = Pointer->Next;
	 }
	}
	return true;
}

void LinkList::PrintLink()
{
	Link Pointer;
	Pointer = m_Link;
	int Temp =0;

	while(Pointer != NULL)
	{
		cout << "The Position of this Node :" << Temp << " " << "The content of this Node :" << Pointer->Data << endl;
		Temp ++;
		Pointer = Pointer->Next;
	}
	
}

bool LinkList::DeleteNode(int Data)
{
	bool Temp = false;
	Link Pointer;
	Link Back;
	Pointer = m_Link;

	if(IsEmpty())
	{
		cout << "The Link is NULL" << endl;
		return Temp;
	}
	//删除首节点
	if(Pointer->Data == Data)
	{
		m_Link = Pointer->Next;
		free(Pointer);
	}
	else
	{
		Back = Pointer;
		Pointer = Pointer->Next;
		while(Pointer != NULL)
		{
			if(Pointer->Data == Data)
			{
             Back->Next = Pointer->Next;
			 free(Pointer);
			 Temp = true;
			 break;
			}
		}
	}
return Temp;
}

bool LinkList::ClearList()
{
	if(m_Link == NULL)
		return false;

	Link Pointer;
	while( m_Link != NULL)
	{
		Pointer = m_Link;
		m_Link = Pointer->Next;
		free(Pointer);
	}
	return true;
}

bool LinkList::DestoryList()
{
	if(!ClearList())
	{
		return false;
	}

	delete m_Link;
	return true;
}


int main()
{
   LinkList Temp;
   Temp.InsertNode(20);
   Temp.InsertNode(30);
   Temp.InsertNode(40);
   Temp.InsertNode(50);
   Temp.PrintLink();

   Temp.SetNodeData(20,100);
   Temp.PrintLink();
	return 0;
}
分享到:
评论

相关推荐

    C++ 单链表反转 C++ 单链表反转

    总结来说,这段C++代码演示了如何通过迭代方式反转一个单链表。这种算法的时间复杂度是O(n),其中n是链表的长度,因为它只遍历一次链表。空间复杂度为O(1),因为我们仅使用了常数个额外的指针变量。理解这个过程对于...

    C++单链表选择排序

    以下是一个简单的C++单链表选择排序的实现: ```cpp #include "sort.h" void selectionSort(ListNode*& head) { if (head == nullptr || head-&gt;next == nullptr) { return; } ListNode* minNode = head; ...

    C++单链表的基本操作

    c++单链表的基本操作

    C++单链表的实现(包含一些最基本的函数)

    C++单链表的实现,包含Create(),Print(const node *head),Delete(node *head,int num)等简单的函数

    C++单链表实现大数加法

    C++单链表实现大数加法 大数加法是一种常见的算法问题,特别是在C++中实现大数加法时需要考虑到数字的位数和溢出问题。使用单链表来实现大数加法可以解决这个问题。本文将详细介绍如何使用C++单链表实现大数加法。 ...

    C++单链表实现的图书管理系统

    在本项目"C++单链表实现的图书管理系统"中,主要涉及了数据结构中的单链表概念以及如何利用C++编程语言设计一个简单的图书管理软件。这个系统通过单链表来存储图书信息,并且实现了文件操作,使得图书数据能够持久化...

    C++单链表实现源码

    // 以下是自己写的基于C++的双向循环链表的创建及其一些操作与实现(于VC下通过),没用模板, // 也没用类,所以比较适合有一点C++语言基础入门者,但可移植不够.有什么bug的话,欢迎指出。 // 或有什么问题也可以联系...

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

    1、单链表基本操作的实现 [问题描述]要在带头结点的单链表h中第i个数据元素之前插入一个数据元素x ,首先需要在单链表中寻找到第i-1个结点并用指针p指示,然后申请一个由指针s 指示的结点空间,并置x为其数据域值,...

    c++ 单链表的逆序排列 正确

    单链表的逆序排列,用的是c++语言的,程序正确能够运行,易懂

    C++单链表类模板 模板

    在这个“C++单链表类模板”中,我们将探讨如何利用C++的类模板来实现一个通用的单链表数据结构,并讨论其核心功能和设计思路。 首先,我们需要定义一个链表节点。节点通常包含两个部分:一个是存储数据的成员变量,...

    自己写的c++单链表操作

    c++单链表的设计与实现。采用c++类实现单链表,而不是结构体。

    c++单链表实现功能

    根据给定的文件信息,我们可以总结出以下关于C++单链表实现的关键知识点: ### 1. 序列列表(SeqList)类定义 #### 类模板定义 ```cpp template class SeqList { // 类成员声明 }; ``` - `template &lt;class T&gt;`:...

    C++单链表的创建插入、删除

    用c++创建单链表、单链表的删除、单链表的插入、求单链表的长度

    数据结构 通讯录管理 课程设计C++单链表版

    在本课程设计中,我们关注的是“数据结构 通讯录管理 课程设计C++单链表版”,这是一项以C++编程语言实现的项目,它利用了数据结构中的单链表来有效地管理通讯录信息。单链表是计算机科学中基础且重要的数据结构之一...

    C++单链表模版(逆置、插入。。。。。。)

    总的来说,这个C++单链表模版提供了一套全面的链表操作接口,对于学习数据结构和C++编程的人来说,是一个很好的实践和参考资源。通过使用和改进这个模版,可以深入理解链表数据结构和C++面向对象编程的概念。

    C++单链表的创建方法

    C++单链表的创建方法,包括头插法、尾插法

    C++ 单链表实现多项式乘法

    ### C++ 单链表实现多项式乘法 #### 实习任务及需求分析 本次实习的任务是使用C++编程语言,通过单链表的数据结构来实现两个多项式的相乘操作。这一过程涉及到对多项式的理解、单链表的运用以及算法的设计与优化。...

    C++单链表的小程序(新手学习用)

    本文将详细解析C++中的单链表,并结合提供的“C++单链表小程序”进行讲解,适合大一新生作为学习材料。 单链表是链表的一种类型,每个节点包含两部分:数据域和指针域。数据域存储实际的数据,而指针域存储指向下一...

    集合的运算(C++单链表实现).zip

    通过以上步骤,我们就可以实现C++单链表对集合的交、并、差运算,并实现从文件读取和保存结果的功能。这样的实现既锻炼了对链表的理解,也展示了对文件操作的掌握,是数据结构和算法应用的一个好例子。

    C++单链表类(实现丰富)

    总的来说,`C++单链表类(实现丰富)`的学习涵盖了链表的基本操作和高级应用,是数据结构和算法学习的重要组成部分。通过深入研究`LLink`类的源代码,你可以更深入地了解链表的工作原理,并提升在实际项目中的应用...

Global site tag (gtag.js) - Google Analytics