美文网首页
静态链表实现

静态链表实现

作者: 榆杨丶 | 来源:发表于2020-06-12 16:49 被阅读0次

项目相关代码在码云托管

#pragma once
#include "StaticChain.h"

StaticChain::StaticChain(int size):m_size(size)
{
    m_list=new Node[size];
    current_size=0;
}
StaticChain::~StaticChain()
{
    delete[] m_list;
    m_list=NULL;
    m_size=0;
    current_size=0;
}
bool StaticChain::InitList()
{
    for (int i = 0; i < m_size-1; i++)
    {
        m_list[i].cur=i+1;
    }
    m_list[m_size-1].cur=0;//数组最后一个元素指向第一个插入数组的元素 代表头结点
    return true;
}
int StaticChain::ListLength()
{
    return current_size;
}
//返回当前第一个空置的坐标位置,并将0号位置指向的备用位置向后挪一位
int StaticChain::MallocInt()
{
    int i=m_list[0].cur;
    if(i)
    {
        m_list[0].cur=m_list[i].cur;
    }
    return i;
}
bool StaticChain::InsertList(int i,int data)
{
    int k=m_size-1,j;
    if(ListLength()==m_size-2) return false;
    if(i<1||i>ListLength()+1)
        return false;
    j=MallocInt();
    if(j)
    {
        m_list[j].data=data;
        //将当前元素切换到要插入位置之前的位置上
        for (int l = 1; l < i; l++)
        {
            k=m_list[k].cur;
        }
        if(current_size!=0) 
        {
            if(j!=m_list[k].cur)
                m_list[j].cur=m_list[k].cur;
            m_list[k].cur=j;
        }
        else 
        {
            m_list[k].cur=j;
        }
        current_size++;
        return true;
    }
    return false;
}

bool StaticChain::DeleteList(int i)
{
    int temp=m_size-1;
    if(i<1||i>current_size)
        return false;
    if(i==m_list[m_size-1].cur)
    {
        if(ListLength()==1)
            m_list[m_size-1].cur=m_list[m_list[m_size-1].cur].cur;
        else
            m_list[m_size-1].cur=0;
    }
    for (int k = 1; k < i; k++)
    {
        temp=m_list[temp].cur;
    }
    int j=m_list[temp].cur;
    m_list[temp].cur=m_list[j].cur;
    Free_SSL(j);
    current_size--;
    return true;
}
void StaticChain::Free_SSL(int i)
{
    m_list[i].cur=m_list[0].cur;
    m_list[0].cur=i;
}

相关文章

  • 25_静态单链表的实现

    关键词: 单链表的一个缺点、静态单链表设计思路、静态单链表的继承层次结构、静态单链表的实现思路、静态单链表的实现 ...

  • C语言实现静态链表

    静态链表(单链表的一种形式) 有时,也可以借用一维数组来描述线性链表,我们称这种链表为静态链表。 静态链表需要实现...

  • Java实现静态链表

    今天复习到静态链表。自己简单实现了静态链表的基本操作,记录一下

  • 静态链表

    01 静态链表 静态链表神似顺序表,不过它存储了指向下一节点的游标。 02 基本操作 静态链表是用数组的方式实现的...

  • 静态链表实现

    项目相关代码在码云托管

  • 数据结构:静态链表

    什么叫静态链表? 用数组描述的链表叫做静态链表,这种描述方法叫做游标实现法。 如何用数组了描述呢 ?简单的说,就是...

  • 静态链表及C#实现

    静态链表 静态链表是用数组模拟动态链表。 静态链表结构描述 首先,静态链表使用数组来模拟动态链表。数组存放一个节点...

  • 数据结构_知识点_静态链表

    1. 静态链表定义 静态链表其实就是使用数组去代替指针以实现单链表。结点定义如下: 需要注意的是: 数组的第一个和...

  • 线性表的静态链表

    静态链表定义 静态链表的增删

  • 有关“队列”的总结

    队列 定义 分类 链式队列 (用链表实现) 静态队列 (用数组实现)图静态队列通常都必须是循环队列循环队列的讲解:...

网友评论

      本文标题:静态链表实现

      本文链接:https://www.haomeiwen.com/subject/zykntktx.html