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

//  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. CentOS安装rar及用法

    1.下载安装rar wget http://www.rarsoft.com/rar/rarlinux-x64-5.4.b3.tar.gztar -zxvf rarlinux-x64-.tar.gz - ...

  2. 再见了acm

    2013年11月17日长沙区域赛我的最后一场区域赛. 忙碌了三年的acm要停下脚步,一时还无法接受. 这样一个结果有点无奈. 感谢队友,三年三支队伍五个队友,感谢你们.(每当写到这里时就总有点小忍不住 ...

  3. IDEA 中使用Maven Compile 找不到本地 Jar

    本文地址:http://www.cnblogs.com/duwei/p/4656410.html 在IDEA 的子 Maven Module 中使用 compile 进行编译, 一开始提示从私有远程仓 ...

  4. POJ 1159 回文LCS滚动数组优化

    详细解题报告可以看这个PPT 这题如果是直接开int 5000 * 5000  的空间肯定会MLE,优化方法是采用滚动数组. 原LCS转移方程 : dp[i][j] = dp[i - 1][j] + ...

  5. 利用SolrJ操作solr API完成index操作

    使用SolrJ操作Solr会比利用httpClient来操作Solr要简单.SolrJ是封装了httpClient方法,来操作solr的API的.SolrJ底层还是通过使用httpClient中的方法 ...

  6. 怎样为ubuntu eclipse 添加 GBK字符集

    以前没有发现,最近把自己的代码靠到同学电脑上运行报错,发现是字符集的问题,一般来说 eclipse默认的是GBK编码,而ubuntu上默认是没有GBK编码的,所以ubuntu eclipse 上自然就 ...

  7. Office 365 - SharePoint 2013 Online之加入App开发工具Napa

    1.新建一个站点集,模板选择开发者模板.例如以下图: 2.确定以后,须要稍等一会儿; 3.点击站点内容,加入app,例如以下图: 4.进入SharePoint Store.选择Napa.例如以下图: ...

  8. 解决Android Activity切换时出现白屏问题

    有些性能低的机器,在切换activity时候出现白屏一段时候后才显示正确的视图 高性能的机器可能太快看不到,但是事实是存在的, 特别是当你新开一个进程的时候,A进程的activity跳转到B进程的Ac ...

  9. 04-UIKit(UINavigationController、NSAttributeString、UIImageView)

    目录: 一.UINavigationController导航视图控制器 二.NSAttributeString属性字符串 三.UIImageView图像处理 回到顶部 一.UINavigationCo ...

  10. ESRI Shapefiles (SHP)

    ESRI Shapefiles (SHP) Also known as ESRI ArcView Shapefiles or ESRI Shapefiles. ESRI is the company ...