数据结构——单链表模板类

这篇博客是数据结构系列的第一部分,主要探讨了单链表这一基本数据结构。内容包括单链表的定义、常见操作(如插入、删除、遍历)以及模板类的实现,旨在帮助读者深入理解单链表的原理和使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构相关笔记整理(一)

这里主要是整理自己在学习数据结构的时候的笔记,这篇博客主要整理单链表的模板类附带几个内置函数的测试,新手上路,多多包涵,发现错误及时交流.....
第一部分是主类代码:(直接贴了哈~~)
#include <iostream>
#include <iomanip>
#include "linearList.h"
using namespace std;

//定义单链表的模板类
template<class T>
struct LinkNode{
 T data;                //数据域
 struct LinkNode<T> *link;           //指针域
 LinkNode(struct LinkNode<T> *ptr = NULL){ link = ptr; }    //只初始化指针成员的构造函数
 LinkNode(const T &item, struct LinkNode<T> *ptr = NULL)    //数据和地址都初始化的构造函数
 {
  data = item;
  link = ptr;
 }
};
//单链表类定义
template<class T>
class List {
public:
 List() { first = new LinkNode<T>; }         //构造函数
 List(const T &x) {first = new LinkNode<T>(x)}      //构造函数
 List(List<T> &L);             //复制构造函数
 ~List(){ makeEmpty(); }            //析构函数
 void makeEmpty();             //将链表置空
 int Length() const;             //计算链表的长度
 LinkNode<T> * getHead() const{ return first; }
 LinkNode<T> * Search(T x);           //搜素数据为x的节点
 LinkNode<T> * Locate(int i)const;          //搜索第i个元素的地址
 bool getData(int i, T &x) const;         //取出第i个节点的数据
 void setData(int i, T &x);           //用x修改第i个元素的值
 bool Insert(int i, T &x);           //在第i个节点后插入新节点
 bool Remove(int i, T &x);           //删除第i个节点数据返回到x中
 bool IsEmpty() const            //判断表是否为NULL
 {
  return first->link == NULL ? true : false;
 }
 bool IsFull() const { return false; }        //判断表满
 void Sort();              //排序
 void InputFront(T  endFlag);          //倒序创建单链表
 void InputRear(T endFlag);           //正序创建单链表
 void Output();              //输出
 List<T>& operator=(List<T> & L);         //重载赋值运算符
protected:
 struct LinkNode<T> *first;
};
//class的函数定义
template<class T>
List<T>::List(List<T> & L) {
 //复制构造函数
 T value;
 LinkNode<T> *srcptr = L.getHead();
 LinkNode<T> *destptr = first = new L
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值