#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. echarts相关属性设置(2)--折线图和柱状图的结合使用

    type:bar和line的组合 option = { { tooltip: { trigger: 'axis', axisPointer: { // type: 'shadow' }, // lab ...

  2. bzoj1966:[AHOI2005]病毒检测

    传送门 我也没想到map如此垃圾,bitset优秀啊 直接trie树上搜索就好了 代码: #include<cstdio> #include<iostream> #includ ...

  3. 「开源」SpringCloud+vue搭建的商城项目

    最近在研究SpringCloud,看到一个基于SpringCloud+vue搭建的模拟商城项目.用来辅助学习SpringCloud企业级开发还是很有帮助的.强烈推荐!! 源码地址在最后. spring ...

  4. scrapy框架中Spiders用法

    scrapy框架中Spiders用法 Spider类定义了如何爬去某个网站,包括爬取的动作以及如何从网页内容中提取结构化的数据 总的来说spider就是定义爬取的动作以及分析某个网页 工作流程分析 以 ...

  5. selenium登录 京东滑动验证码

    京东的滑动验证码在页面上是没有原图的,所有我是用ps把他们拼成一个的. from selenium import webdriver from selenium.webdriver import Ac ...

  6. 左右两个Select列表框交换数据的JS

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...

  7. localStorage 和 sessionStorage的区别

    存储对象: 在主流浏览器中,添加了html5  Web Storage API 的接口,storage是一个存储对象,它包括会话存储(session storage)或本地存储(local stora ...

  8. 11.JAVA-Object类之finalize(),clone(),toString()等方法覆写

    1.Object介绍 Object类是一个特殊的类,是所有类(包括数组,接口 )的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类,所以可以通过向上转型的方法使用 ...

  9. Linux用户管理-用户账号管理

    一.用户账号的增.删.改.查 1>添加用户------useradd 注:1.用户名不应是纯数字或者以数字开头 2.将登陆shell改为/sbin/nologin可禁止用户登录 格式:usera ...

  10. CF1060D Social Circles

    思路: 贪心.既然每个人的左边是其他人的右边,每个人的右边是其他人的左边,那么使重叠的部分最多即可. 实现: #include <bits/stdc++.h> using namespac ...