模拟指针(simulated pointer)

本文介绍了模拟指针的实现,包括三个文件:simulatedPointer.h、excp.h和simulatedPointer.cpp。模拟指针旨在以传统思维规范数组位置,但需要注意与机器表示的区别,还要避免混淆链表和数组下标,同时强调代码规范和命名的重要性。

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

        模拟指针,也就是清华严老师《数据结构-C语言描述》中的静态链表,静态链表的引用是使用一段连续的存储区还模拟指针的功能,可以有效的利用一段连续内存进行一定范围内可变的子链表的空间分配,此数据结构原理比较简单,但是实现起来(至少我个人感觉)有一些绕,原因在于结点的指针域和所申请的整个空间数组的下标都是用整型来表示,极易出错,由于使用连续存储区,稍有不甚将指针地址错写成数组下标则很容易出错并且很难被发现。

  以下为本次实现的模拟指针代码,由三个文件构成:

  1、 simulatedPointer.h     定义了模拟指针的一些基本结构和方法

  2、excp.h       和前面一样,包含定制的异常类。

  3、simulatedPointer.cp    测试用的主函数

//simulatedPointer.h 
#ifndef __SIMULATEDPOINTER__
#define __SIMULATEDPOINTER__
#include <iostream>
#include "excp.h"
using namespace std;

template<class T>
class SimPointerList;

template<class T>
class Node {
public:
    friend class SimPointerList<T>;
private:
    T data;
    int next;
};

template<class T>
class SimPointerList {
public:
    SimPointerList(int maxaSize = 10);
    ~SimPointerList(){delete [] list;}
    int getFreeNode();
    void recycleFreeNode(int i);
    bool isEmpty() const;
    int getLength() const;
    SimPointerList<T>& deleteElement(int k, T& x);
    SimPointerList<T>& insertElement(int k, const T& x);
    void findElement(int k, T& x) const;
    int searchElement(const T& x) const;
    void output(ostream& out) const;
    int getFreeCapacity() const;
pr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值