#include <iostream>
#include <stdlib.h>
#include <stdbool.h>

using namespace std;
//结点
class Node
{
public:
	int data;
	Node* next;
	Node(int d)
	{
		data = d;
		next = NULL;
	}
};
//链表
class List
{
	Node* head;
public:
	List()
	{
		head =NULL;
	}
	void init(Node *p)
	{
		head = p;
	}
	//插入
	void insert(Node* p)
	{
		p -> next = head;
		head = p;
	}
	//删除
	Node* delete_node(Node* p)
	{
		Node** pnext;
		for(pnext = &head;*pnext;pnext = &(*pnext) ->next)
		{
			if(*pnext == p)
			{
				*pnext = p -> next;
				return p;
			}
		}
		return NULL;
	}
	//遍历链表
	/*void trave_list(Node* p)
	{
		for(p = head;p;p = p ->next)
		{
			cout<< p->data << endl;
		}
	}*/
	//查找
	Node* search_list(int key)
	{
		Node* p;
		p =head;
		while(p)
		{
			if(p->data == key)
			{
				cout << "----" << p->data << "----" << endl;
				return p;
			}
			p = p->next;
		}
		return NULL;
	}
	//销毁链表
	void destroy()
	{
		Node* p;
		Node* q;
		for(p = head;p;)
		{
			q = p -> next;
			delete p;
			p = q;
		}
		head = NULL;
	}
	friend ostream& operator << (ostream& os,List& list);
};
//遍历并打印
ostream& operator << (ostream& os,List& list)
{
	Node *p;
	for(p = list.head;p;p = p ->next)
	{
		cout<< p->data << " ";
	}
	return os;

}
int main()
{
	List list;
	Node *p;
	for(int i =0;i<10;i++)
	{
		p = new Node(i);
		list.insert(p);

	}
	p = list.search_list(5);//在链表中找到结点
	Node* t = list.delete_node(p);//把结点移除
	list.delete_node(t);//释放结点空间
	//list.trave_list(p);
	cout<< list << endl;//遍历并打印
	list.destroy();//销毁
	return 0;
	
}
												

C++实现简易单向链表的更多相关文章

  1. Reverse Linked List II 单向链表逆序(部分逆序)

    0 问题描述 原题点击这里. 将单向链表第m个位置到第n个位置倒序连接.例如, 原链表:1->2->3->4->5, m=2, n =4 新链表:1->4->3-& ...

  2. 【编程题目】输入一个单向链表,输出该链表中倒数第 k 个结点

    第 13 题(链表):题目:输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表的尾指针.链表结点定义如下: struct ListNode {int m_nKey;Lis ...

  3. 输出单向链表中倒数第k个结点

    描述 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针. 链表结点定义如下: struct ListNode { int       m_nKey; ListNode* ...

  4. Linus:利用二级指针删除单向链表

    Linus大神在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了什么才是core low-level codi ...

  5. 【转】Linus:利用二级指针删除单向链表

    原文作者:陈皓 原文链接:http://coolshell.cn/articles/8990.html 感谢网友full_of_bull投递此文(注:此文最初发表在这个这里,我对原文后半段修改了许多, ...

  6. C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)

    #include<stdio.h> #include<malloc.h> #define LEN sizeof(struct Student) struct Student / ...

  7. 数据结构——Java实现单向链表

    结点类: /** * @author zhengbinMac * 一个OnelinkNode类的对象只表示链表中的一个结点,通过成员变量next的自引用方式实现线性表中各数据元素的逻辑关系. */ p ...

  8. 输入一个单向链表,输出该链表中倒数第K个结点

    输入一个单向链表,输出该链表中倒数第K个结点,具体实现如下: #include <iostream> using namespace std; struct LinkNode { publ ...

  9. 单向链表JAVA代码

        //单向链表类 publicclassLinkList{       //结点类     publicclassNode{         publicObject data;         ...

随机推荐

  1. html中id name class的区别(转)

    HTML 中 id与name 区别 一个name可以同时对应多个控件,比如checkbox和radio 而id必须是全文档中唯一的 id的用途 1) id是HTML元素的Identity,主要是在客户 ...

  2. shell学习(1)

    #!/bin/bash #######read从屏幕输入######## echo "what is your name?" read PERSON echo "Hell ...

  3. 数据库 | 远程连接centos7上数据库

    用root身份进入远程服务器控制台: 进入Mysql命令: # mysql -uroot -p 或者在本地上连接到远程主机上的MySQL: 假设远程主机的IP为:10.0.0.1,用户名为root,密 ...

  4. 最新Centos7安装python3并与python2共存

    1.查看是否已经安装Python CentOS 7.2 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5. 使用 python -V 命令查看一下是否安 ...

  5. Java之file操作

    File类既可以表示文件,也可以表示为文件夹 文件的创建.删除.重命名 1.文件的创建 File file=new File("new Hello.txt");//当前工程目录下 ...

  6. 081 Search in Rotated Sorted Array II 搜索旋转排序数组 ||

    这是 “搜索旋转排序数组”问题的跟进:如果数组元素允许重复,怎么办?这会影响到程序的时间复杂度吗?会有怎样的影响,为什么?假设按照升序排序的数组在预先未知的某个关键点上旋转.(例如, 0 1 2 4 ...

  7. Linux 查找bom头文件,清除bom头命令

    1.查找bom头文件 grep -r -I -l $'^\xEF\xBB\xBF' ./ 2.替换bom头文件 find . -type f -exec sed -i 's/\xEF\xBB\xBF/ ...

  8. Java GUI 顶级容器JFrame、JDialog

    JFrame的常用构造函数: JFrame() JFrame(String title)   //窗口标题,会显示在左上角窗体图标的后面 JDialog的常用构造函数: JDialog() JDial ...

  9. 搭建高可用mongodb集群—— 副本集

    转自:http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html 在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB& ...

  10. 查询 request 对象的数据

    在 EmpController 中调用 RequestInfoService ris = new RequestInfoService(); ris.saveRequestInfo(request); ...