相关信息:


 /**

  * @subject 数据结构   实验2
* @author 信管1142班 201411671210 赖俊杰
* @project 单链表
* @time 2015年10月29日16:09:34
*/

节点类:


//Node.h

template<typename DataType>
class Node
{
public: DataType data_;
Node<DataType> *next_;
};

链表类:


 //  LinkList.h

 #include<iostream>
#include"Node.h" using std::cout;
using std::endl; template <typename DataType>
class LinkList
{
public:
LinkList(); //建立只有头节点的空链表
LinkList(DataType a[], int n); //建立有n个元素的单链表
~LinkList(); int Length();
DataType Get_value(int serial_number); //在单链表中查找序号为serial_number的元素
int Locate_serial_number(DataType value); //查找值为value的元素序号
void insert(int i, DataType value); //在第i个位置插入值为value的元素
DataType delete_value(int serial_number); //删除序号为serial_number的元素
void PrintList(); private:
Node<DataType>*first_; }; template<typename DataType>
inline LinkList<DataType>::LinkList()
{
first_ = new Node;
first_->next_ = ;
} template<typename DataType>
inline LinkList<DataType>::LinkList(DataType a[], int n)
{ first_ = new Node<DataType>;
Node<DataType> *r = first_;
for (int i = ; i < n; ++i)
{
Node<DataType> *s = new Node<DataType>;
s->data_= a[i];
r->next_ = s;
r = s;
}
r->next_ = ;
} template<typename DataType>
inline LinkList<DataType>::~LinkList()
{
while (first_->next_ != )
{
Node<DataType> *p = new Node<DataType>;
p = first_;
first_ = first_->next_;
delete p;
}
} template<typename DataType>
inline int LinkList<DataType>::Length()
{
Node<DataType> *p = new Node<DataType>;
p = first_->next_;
int count = ;
while (p != )
{
p = p->next_;
++count;
}
return count;
} template<typename DataType>
inline DataType LinkList<DataType>::Get_value(int serial_number)
{
Node<DataType> *p = new Node<DataType>;
p = first_->next_;
int count = ;
while (p != && count < serial_number)
{
p = p->next_;
++count;
}
if (p == )
{
throw"non-existent";
}
else
{
return p->data_;
}
} template<typename DataType>
inline int LinkList<DataType>::Locate_serial_number(DataType value)
{
Node<DataType> *p = new Node<DataType>;
p = first_->next_;
int count = ;
while (p!=)
{
if (p->data_==value)
{
return count;
}
p = p->next_;
++count;
}
return ; } template<typename DataType>
inline void LinkList<DataType>::insert(int i, DataType value)
{
Node<DataType> *p = new Node<DataType>;
p = first_;
int count = ;
while (p != && count < i - )
{
p = p->next_;
++count;
}
if (p == )
{
throw"seat-non-existent";
}
else
{
Node<DataType> *s = new Node<DataType>;
s->data_ = value;
s->next_ = p->next_;
p->next_ = s;
}
} template<typename DataType>
inline DataType LinkList<DataType>::delete_value(int serial_number)
{
Node<DataType> *p = new Node<DataType>;
p = first_;
int count = ;
while (p != && count < serial_number - )
{
p = p->next_;
++count;
}
if (p==||p->next_==)
{
throw"seat-non-existent";
}
else
{
Node<DataType>*q = p->next_;
DataType x = q->data_;
p->next_ = q->next_;
delete q;
return x;
}
} template<typename DataType>
inline void LinkList<DataType>::PrintList()
{
Node<DataType>*p = new Node<DataType>;
p = first_->next_;
while (p!=)
{
cout << p->data_ << " ";
p = p->next_;
}
cout << endl;
}

测试类:


 //main.cpp

 #include"LinkList.h"
#include"Node.h" int main() {
int r[] = { ,,,, };
LinkList<int>L(r, ); cout << "第一次输出:";
L.PrintList(); cout << "第2个位置插入3后:";
L.insert(, );
L.PrintList(); cout << "值为5的元素位置:";
cout << L.Locate_serial_number() << endl; cout << "删除第一个元素后:";
L.delete_value();
L.PrintList(); return ;
}

运行结果:



数据结构-------单链表(C++)的更多相关文章

  1. python实现数据结构单链表

    #python实现数据结构单链表 # -*- coding: utf-8 -*- class Node(object): """节点""" ...

  2. C语言数据结构-单链表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作

    1.数据结构-单链表的实现-C语言 typedef struct LNode { int data; struct LNode* next; } LNode,*LinkList; //这两者等价.Li ...

  3. 数据结构——单链表java简易实现

    巩固数据结构 单链表java实现 单链表除了表尾 每个几点都有一个后继 结点有数据和后继指针组成  通过构建表头和表尾(尾部追加需要)两个特殊几点 实现单链表的一些操作,代码如下 package co ...

  4. C# 数据结构--单链表

    什么是单链表 这两天看到很多有关单链表的面试题,对单链表都不知道是啥的我.经过学习和整理来分享一下啥是单链表和单链表的一些基本使用方法.最后看些网上有关单链表的面试题代码实例. 啥是单链表? 单链表是 ...

  5. C# 数据结构 - 单链表 双链表 环形链表

    链表特点(单链表 双链表) 优点:插入和删除非常快.因为单链表只需要修改Next指向的节点,双链表只需要指向Next和Prev的节点就可以完成插入和删除操作. 缺点:当需要查找某一个节点的时候就需要一 ...

  6. 数据结构—单链表(类C语言描写叙述)

    单链表 1.链接存储方法 链接方式存储的线性表简称为链表(Linked List). 链表的详细存储表示为: ① 用一组随意的存储单元来存放线性表的结点(这组存储单元既能够是连续的.也能够是不连续的) ...

  7. python算法与数据结构-单链表(38)

    一.链表 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点包括 ...

  8. 数据结构——单链表(singly linked list)

    /* singlyLinkedList.c */ /* 单链表 */ /* 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素. */ #include <stdio ...

  9. 数据结构-单链表-类定义2-C++

    上一次的C++链表实现两个单链表的连接不太理想,此次听了一些视频课,自己补了个尾插法,很好的实现了两个链表的连接,当然了,我也是刚接触,可能是C++的一些语法还不太清楚,不过硬是花了一些时间尽量在数据 ...

随机推荐

  1. 通过代码设置button中文字的对齐方式

    // button.titleLabel.textAlignment = NSTextAlignmentLeft; 这句无效 button.contentHorizontalAlignment = U ...

  2. Linux系统故障处理案例(一)

    运行环境:CentOS6.7 故障原因: 昨天在线执行命令yum -y update 在命令执行途中,强制中断并直接运行poweroff命令关机.再次开机出现如图所示故障指示: 根据提示信息分析,可能 ...

  3. 一致性Hash算法及使用场景

    一.问题产生背景      在使用分布式对数据进行存储时,经常会碰到需要新增节点来满足业务快速增长的需求.然而在新增节点时,如果处理不善会导致所有的数据重新分片,这对于某些系统来说可能是灾难性的. 那 ...

  4. HTML5 服务器发送事件

    单向传输:服务器端——>客户端   作用:传回的能每过3s重新刷新一遍.从而能过跟数据库同步,与ajax配合使用   一.客户端写法 必须的用 message 方法   JSON.parse() ...

  5. viewpager双层嵌套,子viewpager无限循环无法手动滑动

    项目中首页是用viewpager+fragment集成的,第一个fragment有广告轮播图使用viewpager实现的,开始就遇到是广告图无法手动滑动,事件被外层的viewpager拦截响应切换到下 ...

  6. xmlDoc.SelectNodes用法(获取不到节点时注意事项)

    注:以下举例仅针对xml自定义了命名空间的情况,如果是其他情况,请参照他人博客~ using System;using System.Collections.Generic;using System. ...

  7. 40个Java集合面试问题和答案【上】【转载】

    1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector.Stack.HashTable和Array.随着集合的广泛使用,Java1 ...

  8. 11_Servlet的一些细节知识点

    [Servlet的细节知识点1-----一个Servlet映射到多个URL] 同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servl ...

  9. C++重写与重载、重定义

    文章引用自:http://blog.163.com/clevertanglei900@126/blog/static/111352259201102441934870/ 重载overload:是函数名 ...

  10. TCP传输小数据包效率问题(译自MSDN)

    TCP传输小数据包效率问题(译自MSDN) http://www.ftpff.com/blog/?q=node/16 摘要:当使用TCP传输小型数据包时,程序的设计是相当重要的.如果在设计方案中不对T ...