下列代码实现的是单链表的按序插入、链表元素的删除、链表的输出

//  mylink.h 代码
#ifndef MYLINK_H
#define MYLINK_H
#include<iostream>
using namespace std;
struct node
{
int data;
node *next;
}; class list
{
public:
list()
{
head=NULL;
};
void insert(int item);
void del(int item);
void show();
private:
node *head;
}; void list::insert(int item) //按序插入
{
node *p=new node();
p->data=item;
p->next=NULL;
if(head==NULL) //当链表为空时
{
head=p;
}
else
{
node *q,*r;
q=head;
while(q&&q->data<=p->data)
{
r=q;
q=q->next;
}
if(q!=NULL)
{
p->next=q;
r->next=p;
}
else
{
p->next=NULL;
r->next=p;
}
}
}
void list::del(int item)
{
if(head==NULL)
{
cout<<"链表为空,不能删除"<<endl;
}
else if(head->data==item)
{
head=head->next;
}
else
{
int flag=1;
while(flag) //保证删除链表中全部值为item的数据
{
node *p=head;
node *q;
while(p&&p->data!=item)
{
q=p;
p=p->next;
}
if(p) //在链表中找到该元素
q->next=p->next;
else
flag=0;
}
}
}
void list::show()
{
node *p;
p=head;
if(head==NULL)
{
cout<<"链表为空"<<endl;
}
else
{
cout<<"单链表为:";
while(p)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
}
#endif

主程序

//  main.cpp 代码
#include "mylink.h"
#include<iostream>
using namespace std;
int main()
{
list L;
L.insert(1);
L.insert(3);
L.insert(2);
L.insert(5);
L.insert(2);
L.insert(3);
L.show();
L.del(2);
cout<<"删除元素2后:"<<endl;
L.show();
L.del(3);
cout<<"删除元素3后:"<<endl;
L.show();
cout<<"OK"<<endl;
system("pause");
return 0; }

单链表的插入删除操作(c++实现)的更多相关文章

  1. 面试之路(10)-BAT面试之java实现单链表的插入和删除

    链表的结构: 链表在空间是不连续的,包括: 数据域(用于存储数据) 指针域(用于存储下一个node的指针) 单项链表的代码实现: 节点类 构造函数 数据域的get,set方法 指针域的get,set方 ...

  2. C++学习---单链表的构建及操作

    #include <iostream> using namespace std; typedef struct LinkNode { int elem;//节点中的数据 struct Li ...

  3. C语言实现单链表节点的删除(带头结点)

    我在之前一篇博客<C语言实现单链表节点的删除(不带头结点)>中具体实现了怎样在一个不带头结点的单链表的删除一个节点,在这一篇博客中我改成了带头结点的单链表.代码演示样例上传至 https: ...

  4. 单链表创建、删除、查找、插入之C语言实现

    本文将详细的介绍C语言单链表的创建.删除.查找.插入以及输出功能 一.创建 #include<stdio.h> #include<stdlib.h> typedef int E ...

  5. 【线性表基础】顺序表和单链表的插入、删除等基本操作【Java版】

    本文表述了线性表及其基本操作的代码[Java实现] 参考书籍 :<数据结构 --Java语言描述>/刘小晶 ,杜选主编 线性表需要的基本功能有:动态地增长或收缩:对线性表的任何数据元素进行 ...

  6. Linux C++ 单链表添加,删除,输出,逆序操作

    /*单链表操作*/#include <iostream>using namespace std; class Node{ public: Node(){ next=0; } Node(in ...

  7. 单链表上的一系列操作(基于c语言)

    单链表的实现分为两种单链表(其实差别并不是很大):带头结点和不带头结点,分别对应下面图中的上下两种. 链表的每一个结点是由两个域组成:数据域和指针域,分别存放所含数据和下一个结点的地址(这都是很明白的 ...

  8. 单链表的插入伪算法和用C语言创建单链表,并遍历

    非循环单链表插入结点伪算法讲解 q插入p之后的伪算法:第一种表示方法:r = p->pNext; // p->pNext表示的是所指向结点的指针域,指针域又是指向下一个结点的地址p-> ...

  9. C++单链表的创建与操作

    链表是一种动态数据结构,他的特点是用一组任意的存储单元(可以是连续的,也可以是不连续的)存放数据元素.链表中每一个元素成为“结点”,每一个结点都是由数据域和指针域组成的,每个结点中的指针域指向下一个结 ...

随机推荐

  1. iOS UIWebView 之 UIProgressView

    之前做等待跳转都是用UIActivityIndicatorView ,后来做webView 加载页面的时候,发现了一个特别好用又超级炫酷的加载提示NJKWebViewProgress,作者巧妙的通过计 ...

  2. application(expand)--easyui

    一,效果图. 二,源代码. <!DOCTYPE html><html><head> <meta charset="UTF-8"> & ...

  3. String类的一些方法

    String 类有以下方法: startsWith(String prefix) boolean java.lang.String.startsWith(String prefix) Tests if ...

  4. Pathchirp—有效的带宽估计方法(二)

    上一个blog介绍了有效带宽估计方法:pathload.http://blog.csdn.net/ice110956/article/details/11126491. 做一个小小的总结:pathlo ...

  5. 【JSP】JSTL核心标签库的使用方法和示例

    JSTL 核心标签库 JSTL 核心标签库标签共有13个,功能上分为4类: 1. 表达式控制标签:out.set.remove.catch 2. 流程控制标签:if.choose.when.other ...

  6. A_全然背包

    /* copyright: Grant Yuan algorithm: 全然背包 time : 2014.7.18 __________________________________________ ...

  7. activity入门2

    1.如何获取其他应用的包名和类名? 点击和查看logcat第一条信息2.第二步Intent intent = new Intent();intent.setClassName("com.an ...

  8. fragment的切换

    1.视图 1)主视图 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...

  9. c++ 重载,覆盖,重定义

    写的不是很明白,后来又重新整理过了,在: http://www.cnblogs.com/iois/p/4986790.html 函数重载(Function Overloading) C++允许同一范围 ...

  10. splinter python浏览器自动化操作,模拟浏览器的行为

    Splinter可以非常棒的模拟浏览器的行为,Splinter提供了丰富的API,可以获取页面的信息判断当前的行为所产生的结果   最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有 ...