`
hzy3774
  • 浏览: 993162 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

C++利用静态成员构建链表

 
阅读更多
#include <IOSTREAM.H>

class Node
{
public:
	Node(int val, Node* next):val(val),next(next){}
	//~Node(){cout<<"del "<<val<<endl;}
	static void showAll();//打印全部节点的值
	static void insertHead(int);//头插
	static void insertTail(int);//尾插
	static void delHead();//删头
	static void delTail();//删尾
	static void clear();//清空
protected:
	int val;
	Node *next;
	static Node *head;
private:
};

Node* Node::head = 0;

void Node::showAll(){//打印全部节点的值
	Node *p = head;
	while (p)
	{
		cout<<p->val<<" ";
		p = p->next;
	}
	cout<<endl;
}

void Node::insertHead(int val){//头插
	Node *p = new Node(val, head);
	head = p;
}

void Node::insertTail(int val){//尾插
	Node *p = new Node(val, 0);
	if (!head)
	{
		head = p;
		return;
	}
	Node *q = head;
	while (q->next)
	{
		q = q->next;
	}
	q->next = p;
}

void Node::delHead(){//删头
	Node *p = head;
	if (head)
	{
		head = head->next;
		delete p;
	}
}

void Node::delTail(){//删尾
	if (!head)
	{
		return;
	}
	if (!(head->next))
	{
		delete(head);
		head = NULL;
		return;
	}
	Node *p = head;
	while (p->next->next)
	{
		p = p->next;
	}
	delete(p->next);
	p->next = NULL;
}

void Node::clear(){//清空
	Node *p = head;
	Node *q = 0;
	head = 0;
	while (p)
	{
		q = p;
		p = p->next;
		delete q;
	}
}

void main(){
	Node::delHead();
	Node::delTail();
	Node::insertTail(2);
	Node::delTail();
	for (int i = 0; i < 10; i++)
	{
		Node::insertTail(i + 1);
	}
	Node::delTail();
	Node::showAll();
}

 

分享到:
评论

相关推荐

    C++利用静态成员或类模板构建链表的方法讲解

    本篇文章将探讨如何利用静态成员和类模板来构建链表,这两种方法都能帮助简化链表操作的实现。 首先,我们来看如何使用静态成员构建链表。静态成员在C++中属于类的所有实例共享,这意味着它们不随对象的创建和销毁...

    静态链表实现

    在提供的压缩包文件中,除了源代码文件(如"静态链表.cpp")之外,还有其他Visual Studio项目文件(如".dsp", ".dsw", ".ncb", ".opt", ".plg"),这些都是微软Visual C++开发环境的配置文件,用于管理项目构建和...

    二叉链表的应用c++代码_二叉链表c++代码_

    文档“二叉链表的应用c++代码.doc”中可能包含具体的C++实现细节,包括如何构建和操作二叉链表。通过阅读并理解这段代码,你可以进一步巩固对二叉链表概念和C++编程的理解,并能将其应用于实际项目中。 总的来说,...

    链表实现多级菜单

    利用链表,我们可以轻松地创建这种树状结构。每个菜单项作为一个节点,包含菜单的文本、对应的函数或操作、以及指向其子菜单的指针。 链表实现多级菜单的过程大致如下: 1. **节点定义**:首先,我们需要定义菜单...

    严蔚敏的数据结构,仅包含静态链表的代码,可直接在VS2019中运行 本静态链表为数组中仅包含一个主链表和一个备用链表

    在VS2019环境下运行这段代码,我们可以看到如何在C++中构建和操作静态链表。C++是一种强大的编程语言,支持面向对象编程,因此在实现数据结构时提供了丰富的功能和灵活性。C++的模板机制使得代码可以用于处理不同...

    静态链表求集合对称差

    在本例中,我们利用静态链表来实现这一运算。 #### 知识点三:静态链表的初始化与管理 - **初始化空间**:`InitSpace_SL`函数负责初始化静态链表的空间,将数组`space`中各元素链接成一个备用链表,其中`space[0]....

    studentdatabase:这是一个由链表构建的数据库

    通过这个项目,我们可以深化对链表数据结构的理解,掌握如何利用链表构建数据库,以及如何处理链表上的基本操作。同时,这也是一个很好的机会去学习C++语言,尤其是STL的使用,以及如何在实际项目中运用这些知识。...

    C++完美闹钟可执行源程序(附完全代码)

    在C++中,开发者可以利用其强大的功能来创建复杂的程序,例如闹钟应用。 1. **GUI编程**:这个闹钟应用很可能使用了某种库来创建图形用户界面,如Qt、wxWidgets、GTK+或MFC等。这些库提供了丰富的控件和布局管理,...

    包含几乎所有函数的双链表

    3. **类和对象**: 在C++中,双链表的实现通常通过定义一个名为`ListNode`的类来完成,这个类包含数据成员(存储数据)和成员函数(操作数据)。此外,还可能有一个`LinkedList`类来管理链表的创建、插入、删除等操作...

    C++停车场管理系统吖.zip

    C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持过程化编程,也支持面向对象编程的程序设计语言。它的强大在于对底层硬件的控制能力和高效的代码执行效率,这使得它非常适合构建这种实时性要求较高...

    单链表尾插法(C++源代码)

    这种方式在构建链表时可以避免遍历整个链表来找到最后一个节点,从而提高了效率。 #### 类定义与成员函数 在这个示例中,`Student`类被定义为单链表中的节点类型。该类包含了一个构造函数、析构函数以及一些静态...

    ATM模拟系统 C++

    在这个C++实现的ATM模拟系统中,学生或开发者可以学习到如何利用C++来构建一个功能完备的软件,模拟真实世界中的ATM机功能。 首先,我们从"开户"这个功能出发。在C++中,这通常涉及到创建一个表示"账户"的类,包含...

    饭店订餐系统 C++ / c++ 6.0

    它利用了C++的强大功能和面向对象编程的特性,以提高效率和用户体验。 【描述】:“饭店订餐系统 C++ Visual c++ 6.0”表明此项目是使用Visual C++ 6.0开发环境构建的。Visual C++ 6.0是一款经典的集成开发环境...

    C++语言实现一个多级文件目录管理系统,采用链表的数据结构。.zip

    首先,C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持过程化编程,也支持面向对象编程的程序设计语言。它的强大之处在于提供丰富的库支持和模板机制,使得我们可以方便地构建复杂的数据结构和算法...

    用c++编写的模拟进程调度的程序

    在计算机系统中,进程调度是操作系统核心功能之一,它负责管理系统的执行单元——进程,以确保系统资源的有效利用。在这个“用C++编写的模拟进程调度的程序”中,我们将会探讨三种常见的进程调度策略:短作业优先...

    经典c++数据结构教程

    C++中的数组有静态数组和动态数组(如`std::vector`)之分,它们在内存中连续存储,提供了快速访问和操作的便利。 2. **链表**:链表由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组相比,链表...

    代码雨c++源代码

    在这个名为"代码雨c++源代码"的项目中,开发者使用了C++语言在Visual Studio 2017环境下构建了一个工程,实现了123行简洁高效的代码来生成这种效果。接下来,我们将深入探讨这个项目可能涉及的C++编程和计算机图形学...

    双向链表的六项基本操装以及封装成lib,dll

    链表生成通常从空链表开始,通过不断插入新节点来构建。可以创建一个头节点,然后根据需要插入新节点,确保新节点的前驱和后继指针被正确设置。 3. **查找操作**: 在双向链表中查找特定元素,可以从头节点开始,...

    c++,学生成绩管理系统

    下面我们将详细探讨如何利用C++来构建这样的系统,以及链表在其中所起的关键作用。 首先,我们要理解C++的基础知识。C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持过程化编程,也支持面向对象...

Global site tag (gtag.js) - Google Analytics