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++语言实现面向对象的单链表
面向对象程序设计实验报告:程序设计一:string类;程序设计二:学生信息管理系统;1.使用C++语言实现单链表功能 2.使用C++实现对文本文件的读写 3.使用OOP方法综合设计
使用C++面向对象的方法实现带头结点的单链表的插入,删除等基本操作.
本案例主要在PHP中通过面向对象的程序设计思想来实现单链表的数据结构算法。 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。 单链表是最简单的链表表示。用它来表示线性表时,...
单链表的类模板实现,运用友元模板函数对列表进行排序 C++程序设计教程面向对象第七章课后题代码 类模板 函数模板 嵌套 友元函数
压缩包内为线性表的工程包;工程内包括顺序表、单链表、双链表的类的定义与实现;附适当注释;完全面向对象,类封装;测试类中用(纯)虚函数实现多态。
含有链表的遍历 指定位置的查找 删除 链表的创建 面向对象的 C++课程设计
本文首先采用面向对象技术对电力系统各种元件进 行建模,通过定义电网设备与拓扑分析相关的属性和行 为,采用广度优先搜索方法,实现了电网拓扑的静态生 成和快速动态跟踪。拓扑分析完成后,确定了电网设备 的运行...
C++控制台学生通讯录管理系统,用面向对象方式编写,的利用类,指针,单链表,文件读取等C++的知识,功能有建立通讯录,添加,修改,插入,查询,删除,保存等功能其中数据库保存功能自动实现;采用多文件连编。用...
(1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和删除等成员函数实现时需要考虑的边界条件, prepend(头部插入)、pop(头部删除)、append(尾部插入)、pop_last(尾部...
这是我们在学习JavaSE的时候,老师布置的作业,即简单实现一个能插入、更新、删除、查询、打印显示的小程序,真的很小很粗糙,但是体现了Java面向对象的编程特点,并再现了相关的知识点,对初学者可能有一定借鉴……
学生信息管理系统设计文档 设计任务描述 为了实现学籍管理的简单化,我们基于Visual C++集成开发环境编写了"学生信息管理系统"软件,该软件适用于所有windows操作系统,面向广大用户,界面简洁,操作简单。...
功能分为三个板块,分别是单链表、循环链表、双向链表的建立、插入、删除等基本操作的过程。 单链表:●查看单链表定义,相应算法...上述所有功能采用面向对象的方法通过C++语言程序结合QT框架实现,后面会详细介绍。
压缩包内为线性表工程包。 工程包内包含顺序表、单链表、双链表的定义与实现,附有适当注释。 整个工程完全面向对象,封装成类(模版类)。
经过分析,我们使用 MICROSOFT公司的 VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行...
C语言实现单链表的基础操作,比如创建链表,添加元素,删除元素,查询元素。 本程序采用了面向对象的思想但是没有使用类(因为没有必要)
第12章 数据结构与面向对象程序设计(OOP) 12.1 面向对象程序设计的引入 12.1.1 面向对象的基本概念 12.1.2 面向对象的程序设计方法概要 12.2 面向对象的数据结构程序设计举例 12.2.1 线性表的程序设计 ...
作为是一种完全面向对象的程序设计语言,Jv在提高程序的复用性和安全性时,在不同类的资源配置方面,较面向过程的程序设计语言有更高层面的要求,通过Jv语言表现各种数据结构、实现相关算法是数据结构课程的难点之一...