首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

单链表的面向对象兑现

2012-09-23 
单链表的面向对象实现1.利用非面向对象定义节点Node下面是头文件LinkList.h?#ifndef LinkList_H#define Li

单链表的面向对象实现

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

下面是头文件LinkList.h

?

#ifndef LinkList_H#define LinkList_Htemplate<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_Htemplate <class T>class LinkList;       //为是Node类的友员类而声明template <class T>class Node{   public:           friend class LinkList<T>;   //将LinkList类设为友元类   private:      T data;      Node<T> *next;  };#endif

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

热点排行