`
hzy3774
  • 浏览: 984428 次
  • 性别: 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++利用静态成员或类模板构建链表的方法讲解

    利用静态成员构建链表 #include &lt;IOSTREAM&gt; class Node { public: Node(int val, Node* next):val(val),next(next){} //~Node(){cout&lt;&lt;"del "&lt;&lt;val&lt;&lt;endl;} static void showAll();//打印...

    Visual C++音频视频处理技术及工程实践(分卷7)

    7.3.4 构建滤波器链表(Building Filer Graph) 252 7.3.5 滤波器链表中的数据流动Data Flow 257 7.3.6 DirectShow中的事件通知机制 261 7.3.7 常用DirectShow SDK接口 267 7.4 DirectShow SDK常用开发案例 267 ...

    Visual C++音频/视频处理技术及工程实践 (分卷1)

    7.3.4 构建滤波器链表(Building Filer Graph) 252 7.3.5 滤波器链表中的数据流动Data Flow 257 7.3.6 DirectShow中的事件通知机制 261 7.3.7 常用DirectShow SDK接口 267 7.4 DirectShow SDK常用开发案例 267 ...

    Visual C++音频视频处理技术及工程实践(分卷0)

    7.3.4 构建滤波器链表(Building Filer Graph) 252 7.3.5 滤波器链表中的数据流动Data Flow 257 7.3.6 DirectShow中的事件通知机制 261 7.3.7 常用DirectShow SDK接口 267 7.4 DirectShow SDK常用开发案例 267 ...

    Visual C++音频视频处理技术及工程实践地址

    7.3.4 构建滤波器链表(Building Filer Graph) 252 7.3.5 滤波器链表中的数据流动Data Flow 257 7.3.6 DirectShow中的事件通知机制 261 7.3.7 常用DirectShow SDK接口 267 7.4 DirectShow SDK常用开发案例 267 ...

    Visual C++音频/视频处理技术及工程实践(分卷2)

    7.3.4 构建滤波器链表(Building Filer Graph) 252 7.3.5 滤波器链表中的数据流动Data Flow 257 7.3.6 DirectShow中的事件通知机制 261 7.3.7 常用DirectShow SDK接口 267 7.4 DirectShow SDK常用开发案例 267 ...

    C语言利用模板实现简单的栈类

    本文实例为大家分享了C语言利用模板实现简单的栈类(数组和单链表),供大家参考,具体内容如下 主要的功能是实现一个后进先出的列表,有入栈、出栈、返回大小、判空等基本功能 #pragma once using namespace std;...

    基于C++、文件操作和Huffman算法实现图片压缩源码+使用说明+详细注释+sln解决方案.zip

    使用结构体存储节点,使用数组存储树的节点,使用静态二叉链表方式存储二叉树。 ```c++ struct HTNode{ int weight; int parent; int lchild; int rchild; }; typedef HTNode *HuffmanTree; ``` 3.Huffman...

    Visual C++音频视频处理技术及工程实践(分卷9)

    7.3.4 构建滤波器链表(Building Filer Graph) 252 7.3.5 滤波器链表中的数据流动Data Flow 257 7.3.6 DirectShow中的事件通知机制 261 7.3.7 常用DirectShow SDK接口 267 7.4 DirectShow SDK常用开发案例 267 ...

    Visual C++音频视频处理技术及工程实践(含源码2/2)

    7.3.4 构建滤波器链表(Building Filer Graph) 252 7.3.5 滤波器链表中的数据流动Data Flow 257 7.3.6 DirectShow中的事件通知机制 261 7.3.7 常用DirectShow SDK接口 267 7.4 DirectShow SDK常用开发案例 267 ...

    Visual C++音频视频处理技术及工程实践(分卷6)

    7.3.4 构建滤波器链表(Building Filer Graph) 252 7.3.5 滤波器链表中的数据流动Data Flow 257 7.3.6 DirectShow中的事件通知机制 261 7.3.7 常用DirectShow SDK接口 267 7.4 DirectShow SDK常用开发案例 267 ...

    Visual C++ 音频/视频 处理技术及工程实践(分卷3)

    7.3.4 构建滤波器链表(Building Filer Graph) 252 7.3.5 滤波器链表中的数据流动Data Flow 257 7.3.6 DirectShow中的事件通知机制 261 7.3.7 常用DirectShow SDK接口 267 7.4 DirectShow SDK常用开发案例 267 ...

    数据结构演示软件

    读者可以利用鼠标移动光标选择“演示算法”或“菜单命令”来控制课件的运行过程。 1. 课件的演示算法菜单为页式菜单。第一级菜单中的各项与上述“系统内容”中各大项相对应,读者运行“算法演示课件”后, 即进入...

    JAVA面试题最全集

    构建一个connect pool,然后再调用它, 8.j2ee平台与dotnet平台的区别 9.ejb的life cycle 10.session bean 和 entity bean的区别 11.ejb中的transaction机制 12.synchronized (生产者和消费) 13.String 和 ...

Global site tag (gtag.js) - Google Analytics