#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++中属于类的所有实例共享,这意味着它们不随对象的创建和销毁...
在提供的压缩包文件中,除了源代码文件(如"静态链表.cpp")之外,还有其他Visual Studio项目文件(如".dsp", ".dsw", ".ncb", ".opt", ".plg"),这些都是微软Visual C++开发环境的配置文件,用于管理项目构建和...
文档“二叉链表的应用c++代码.doc”中可能包含具体的C++实现细节,包括如何构建和操作二叉链表。通过阅读并理解这段代码,你可以进一步巩固对二叉链表概念和C++编程的理解,并能将其应用于实际项目中。 总的来说,...
利用链表,我们可以轻松地创建这种树状结构。每个菜单项作为一个节点,包含菜单的文本、对应的函数或操作、以及指向其子菜单的指针。 链表实现多级菜单的过程大致如下: 1. **节点定义**:首先,我们需要定义菜单...
在VS2019环境下运行这段代码,我们可以看到如何在C++中构建和操作静态链表。C++是一种强大的编程语言,支持面向对象编程,因此在实现数据结构时提供了丰富的功能和灵活性。C++的模板机制使得代码可以用于处理不同...
在本例中,我们利用静态链表来实现这一运算。 #### 知识点三:静态链表的初始化与管理 - **初始化空间**:`InitSpace_SL`函数负责初始化静态链表的空间,将数组`space`中各元素链接成一个备用链表,其中`space[0]....
通过这个项目,我们可以深化对链表数据结构的理解,掌握如何利用链表构建数据库,以及如何处理链表上的基本操作。同时,这也是一个很好的机会去学习C++语言,尤其是STL的使用,以及如何在实际项目中运用这些知识。...
在C++中,开发者可以利用其强大的功能来创建复杂的程序,例如闹钟应用。 1. **GUI编程**:这个闹钟应用很可能使用了某种库来创建图形用户界面,如Qt、wxWidgets、GTK+或MFC等。这些库提供了丰富的控件和布局管理,...
3. **类和对象**: 在C++中,双链表的实现通常通过定义一个名为`ListNode`的类来完成,这个类包含数据成员(存储数据)和成员函数(操作数据)。此外,还可能有一个`LinkedList`类来管理链表的创建、插入、删除等操作...
C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持过程化编程,也支持面向对象编程的程序设计语言。它的强大在于对底层硬件的控制能力和高效的代码执行效率,这使得它非常适合构建这种实时性要求较高...
这种方式在构建链表时可以避免遍历整个链表来找到最后一个节点,从而提高了效率。 #### 类定义与成员函数 在这个示例中,`Student`类被定义为单链表中的节点类型。该类包含了一个构造函数、析构函数以及一些静态...
在这个C++实现的ATM模拟系统中,学生或开发者可以学习到如何利用C++来构建一个功能完备的软件,模拟真实世界中的ATM机功能。 首先,我们从"开户"这个功能出发。在C++中,这通常涉及到创建一个表示"账户"的类,包含...
它利用了C++的强大功能和面向对象编程的特性,以提高效率和用户体验。 【描述】:“饭店订餐系统 C++ Visual c++ 6.0”表明此项目是使用Visual C++ 6.0开发环境构建的。Visual C++ 6.0是一款经典的集成开发环境...
首先,C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持过程化编程,也支持面向对象编程的程序设计语言。它的强大之处在于提供丰富的库支持和模板机制,使得我们可以方便地构建复杂的数据结构和算法...
在计算机系统中,进程调度是操作系统核心功能之一,它负责管理系统的执行单元——进程,以确保系统资源的有效利用。在这个“用C++编写的模拟进程调度的程序”中,我们将会探讨三种常见的进程调度策略:短作业优先...
C++中的数组有静态数组和动态数组(如`std::vector`)之分,它们在内存中连续存储,提供了快速访问和操作的便利。 2. **链表**:链表由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组相比,链表...
在这个名为"代码雨c++源代码"的项目中,开发者使用了C++语言在Visual Studio 2017环境下构建了一个工程,实现了123行简洁高效的代码来生成这种效果。接下来,我们将深入探讨这个项目可能涉及的C++编程和计算机图形学...
链表生成通常从空链表开始,通过不断插入新节点来构建。可以创建一个头节点,然后根据需要插入新节点,确保新节点的前驱和后继指针被正确设置。 3. **查找操作**: 在双向链表中查找特定元素,可以从头节点开始,...
下面我们将详细探讨如何利用C++来构建这样的系统,以及链表在其中所起的关键作用。 首先,我们要理解C++的基础知识。C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持过程化编程,也支持面向对象...