⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9-6.h

📁 《c++语言程序设计》例题程序
💻 H
字号:
//9-6.h
#ifndef LINKEDLIST_CLASS
#define LINKEDLIST_CLASS

#include <iostream.h>
#include <stdlib.h>

#ifndef NULL
const int NULL = 0;
#endif  // NULL

#include "9-3.h"

template <class T>
class LinkedList
{
   private:
      //数据成员:
      // 表头和表尾指针
      Node<T> *front, *rear;
      
      // 记录表当前遍历位置的指针,由插入和删除操作更新
      Node<T> *prevPtr, *currPtr;
      
      // 表中的元素个数
      int size;
      
      // 当前元素在表中的位置序号。由函数Reset使用
      int position;

      //函数成员:
      // 生成新节点,数据域为item,指针域为ptrNext
      Node<T> *GetNode(const T& item,Node<T> *ptrNext=NULL);

      //释放节点
      void FreeNode(Node<T> *p);
      
      // 将链表L 拷贝到当前表(假设当前表为空)。
      // 被拷贝构造函数、operator=调用
      void CopyList(const LinkedList<T>& L);
      
   public:
      // 构造函数
      LinkedList(void);
      LinkedList(const LinkedList<T>& L);  //拷贝构造函数
      
      // 析构函数
      ~LinkedList(void);
      
      // 重载赋值运算符
      LinkedList<T>& operator= (const LinkedList<T>& L);
      
      // 检查表的状态
      int ListSize(void) const;   //返回链表中元素个数(size)
      int ListEmpty(void) const;  //size等于0时返回TRUE,否则返回FALSE
      
      // 遍历表的函数
      void Reset(int pos = 0);
              //将指针currPtr移动到序号为pos的节点,prevPtr相应移动
              // position记录当前节点的序号
      void Next(void);  //使prevPtr和currPtr移动到下一个节点
      int EndOfList(void) const;
                        // currPtr等于NULL时返回TRUE,否则返回FALSE 
      int CurrentPosition(void) const;  //返回数据成员position
      
      // 插入节点的函数:插入一个数据域为item的节点
      void InsertFront(const T& item);  //在表头插入
      void InsertRear(const T& item);  //在表尾添加
      void InsertAt(const T& item);  //在当前节点之前插入
      void InsertAfter(const T& item);  //在当前节点之后插入
      
      // 删除节点,释放节点空间,更新prevPtr、currPtr和size
      T DeleteFront(void);  //删除头节点
      void DeleteAt(void);  //删除当前节点

      // 返回对当前节点成员data的引用(使数据域可以被使用或修改)
      T& Data(void);
      
      // 清空链表:释放所有节点的内存空间。被析构函数、operator= 调用
      void ClearList(void);
};

#endif  // LINKEDLIST_CLASS

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -