`
hao3100590
  • 浏览: 128983 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

单链表的面向对象实现

阅读更多

1.利用非面向对象定义节点Node

下面是头文件LinkList.h

 

#ifndef LinkList_H
#define LinkList_H

template<class T>
struct Node{
	Node<T>* next;
	T data;
};

template<class T>
class LinkList{
	public:
		LinkList();							//建立只有头结点的空链表
		LinkList(T a[], int n); //建立有n个元素的单链表
		~LinkList();						//析构函数
		int length();						//求单链表的长度
		T get(int i);						//取单链表中第i个结点的元素值
		int locate(T x);				//求单链表中值为x的元素序号
		void insertData(int i, T x);//在单链表中第i个位置插入元素值为x的结点
		T deleteData(int i);		//在单链表中删除第i个结点
		void printList(); 			//遍历单链表,按序号依次输出各元素
		Node<T>* getFirst();		//获取头结点
	private:
		Node<T>* first;					//单链表的头指针
		void release();					//释放链表
};

#endif

在这里定义头结点是利用了原来c语言的方式,定义的结构体,这是c++从c继承过来的,现在要改成c++面向对象的方法定义节点!

 对头文件的实现LinkList.cpp就不写了

 

2.对Node节点的面向对象实现

a.LinkList.h

 

//LinkList.h  声明类LinkList
#ifndef LinkList_H
#define LinkList_H
#include "Node.h"

template <class T>
class LinkList
{
 public:
   LinkList( );  //建立只有头结点的空链表
   LinkList(T a[], int n);  //建立有n个元素的单链表
   ~LinkList( );          //析构函数
   int Length( );          //求单链表的长度
   T Get(int i);           //取单链表中第i个结点的元素值
   int Locate(T x);       //求单链表中值为x的元素序号
   void Insert(int i, T x);   //在单链表中第i个位置插入元素值为x的结点
   T Delete(int i);        //在单链表中删除第i个结点
   void PrintList( );           //遍历单链表,按序号依次输出各元素
 private:
   Node<T> *first;  //单链表的头指针
};

#endif

 b.然后在Node中将LinkList.h声明为友元类,这样可以访问Node中的私有成员

Node.h

 

//Node.h  声明类Node
#ifndef Node_H
#define Node_H

template <class T>
class LinkList;       //为是Node类的友员类而声明

template <class T>
class Node
{
   public:         
	  friend class LinkList<T>;   //将LinkList类设为友元类
   private:		    
	  T data;
      Node<T> *next;  
};

#endif

 这样就完成了彻底的对象会编程

分享到:
评论

相关推荐

    面向对象的单链表,在数据结构中使用

    面向对象的单链表,数据结构中使用,使用C语言!谢谢,祝使用愉快

    链表-使用C++语言实现面向对象的单链表.zip

    链表 链表_使用C++语言实现面向对象的单链表

    面向对象程序设计实验报告

    面向对象程序设计实验报告:程序设计一:string类;程序设计二:学生信息管理系统;1.使用C++语言实现单链表功能  2.使用C++实现对文本文件的读写  3.使用OOP方法综合设计

    带头结点单链表操作C++的实现

    使用C++面向对象的方法实现带头结点的单链表的插入,删除等基本操作.

    在PHP中实现使用单链表

    本案例主要在PHP中通过面向对象的程序设计思想来实现单链表的数据结构算法。 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。 单链表是最简单的链表表示。用它来表示线性表时,...

    单链表的类模板实现,运用友元模板函数对列表进行排序

    单链表的类模板实现,运用友元模板函数对列表进行排序 C++程序设计教程面向对象第七章课后题代码 类模板 函数模板 嵌套 友元函数

    C++模版类实现顺序表、单链表、双链表

    压缩包内为线性表的工程包;工程内包括顺序表、单链表、双链表的类的定义与实现;附适当注释;完全面向对象,类封装;测试类中用(纯)虚函数实现多态。

    链表的基本操作,链表的创建,遍历 查找

    含有链表的遍历 指定位置的查找 删除 链表的创建 面向对象的 C++课程设计

    面向对象技术电力系统网络拓扑分析的研究

    本文首先采用面向对象技术对电力系统各种元件进 行建模,通过定义电网设备与拓扑分析相关的属性和行 为,采用广度优先搜索方法,实现了电网拓扑的静态生 成和快速动态跟踪。拓扑分析完成后,确定了电网设备 的运行...

    C++控制台学生通讯录管理系统(类实现)

    C++控制台学生通讯录管理系统,用面向对象方式编写,的利用类,指针,单链表,文件读取等C++的知识,功能有建立通讯录,添加,修改,插入,查询,删除,保存等功能其中数据库保存功能自动实现;采用多文件连编。用...

    Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】

    (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和删除等成员函数实现时需要考虑的边界条件, prepend(头部插入)、pop(头部删除)、append(尾部插入)、pop_last(尾部...

    java实现的简单电话本通讯录程序

    这是我们在学习JavaSE的时候,老师布置的作业,即简单实现一个能插入、更新、删除、查询、打印显示的小程序,真的很小很粗糙,但是体现了Java面向对象的编程特点,并再现了相关的知识点,对初学者可能有一定借鉴……

    C++课程设计-单链表——学生信息管理系统.docx

    学生信息管理系统设计文档 设计任务描述 为了实现学籍管理的简单化,我们基于Visual C++集成开发环境编写了"学生信息管理系统"软件,该软件适用于所有windows操作系统,面向广大用户,界面简洁,操作简单。...

    基于C++(QT)链表实现过程化(数据结构)【100011836】

    功能分为三个板块,分别是单链表、循环链表、双向链表的建立、插入、删除等基本操作的过程。 单链表:●查看单链表定义,相应算法...上述所有功能采用面向对象的方法通过C++语言程序结合QT框架实现,后面会详细介绍。

    线性表类的定义与实现

    压缩包内为线性表工程包。 工程包内包含顺序表、单链表、双链表的定义与实现,附有适当注释。 整个工程完全面向对象,封装成类(模版类)。

    图书管理系统 课程设计

    经过分析,我们使用 MICROSOFT公司的 VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行...

    链表的基本操作.cpp

    C语言实现单链表的基础操作,比如创建链表,添加元素,删除元素,查询元素。 本程序采用了面向对象的思想但是没有使用类(因为没有必要)

    数据结构习题答案(全部算法)严蔚敏版

    第12章 数据结构与面向对象程序设计(OOP) 12.1 面向对象程序设计的引入 12.1.1 面向对象的基本概念 12.1.2 面向对象的程序设计方法概要 12.2 面向对象的数据结构程序设计举例 12.2.1 线性表的程序设计 ...

    数据结构Java语言描述课程实验设计(全文).docx

    作为是一种完全面向对象的程序设计语言,Jv在提高程序的复用性和安全性时,在不同类的资源配置方面,较面向过程的程序设计语言有更高层面的要求,通过Jv语言表现各种数据结构、实现相关算法是数据结构课程的难点之一...

Global site tag (gtag.js) - Google Analytics