自定义的线性表类

线性表类的定义:

#ifndef LINE_H_INCLUDED
#define LINE_H_INCLUDED
#include<iostream>
using namespace std;
class Linearlist
{
private:
int MaxSize;
int Length;
int *element;


public:
Linearlist(int Max=50)          //构造函数
{
MaxSize=Max;
element=new int [MaxSize];
Length=0;
}


bool IsEmpty()                   //判空
{
if(Length==0)
return true;
}


bool  Fresh(int i,int k)        //初始化
{
        if(i<0||i>MaxSize-1)
                {
                    cout<<"Fresh failure"<<endl;
                    return false;
                }
        else
                {
                    element[i]=k;
                    Length++;
                    return true;
                }
}


int* getelement()                //获取数组头指针
{
        return element;
}


int getLength()                  //获取数组长度
{
        return Length;
}


bool Find(int k,int &item)           //查找第k个节点的数据
{
if(k<0||k>MaxSize||Length==0)
{
cout<<"Find failure"<<endl;
return false;
}
else
{
   item=element[k-1];
                return true;
}
}


bool inseart(int k,int key)       //在第k个节点后插入新节点
{
if((k>Length-1)||(k<0)||(Length==MaxSize))
{
cout<<" inseart failure"<<endl;
return false;
}
else
{
for(int i=Length-1;i>k-1;i--)
{
element[i+1]=element[i];
}
element[k]=key;
Length++;
return true;
}
}


bool pop(int k)        //删除第k个节点
{
if(k<0||k>Length-1)
{
cout<<"pop failure"<<endl;
return false;
}
else
{
   for(int i=k-1;i<Length-1;i++)
                        element[i]=element[i+1];
Length--;
return true;
}
}


int search(int x)       //查询值为x的节点下标
{
int a=-1;
for(int i=0;i<Length;i++)
{
if(element[i]==x)
{
       a=i;
       break;
}
}
if(a==-1)
                {
                        return 0;
                }
                else return a;
}


~Linearlist()
{
delete[]element;
}
};






#endif // LINE_H_INCLUDED

测试代码(cpp文件)

#include<iostream>
#include"line.h"
using namespace std;
int main()
{
    cout<<"数组规模为十,并初始化为0~9."<<endl;
    Linearlist A(10);
    for(int i=0;i<10;i++)
    {
        A.Fresh(i,i);
    }

    int a;
    cout<<endl<<"原始存储情况:"<<endl;
    int *p=A.getelement();
    cout<<"\t"<<"\t";
    for(int i=0;i<A.getLength();i++)
    {
        cout<<p[i]<<"   ";
    }

    cout<<endl<<"查找第5个节点的数据:"<<endl;
    A.Find(5,a);
    cout<<"\t"<<"\t"<<a;

    cout<<endl<<"删除第3个节点:"<<endl;
     A.pop(3);
    p=A.getelement();
    cout<<"\t"<<"\t";
    for(int i=0;i<A.getLength();i++)
    {
        cout<<p[i]<<"   ";
    }

    cout<<endl<<"在第6个节点后插入12:"<<endl;
     A.inseart(6,12);
    cout<<"\t"<<"\t";
    p=A.getelement();
    for(int i=0;i<A.getLength();i++)
    {
        cout<<p[i]<<"   ";
    }

    cout<<endl<<"查询值为30的节点:"<<endl;
    cout<<"\t"<<"\t";
    a=A.search(30);
    if(a)
        cout<<"在第"<<a<<"个节点"<<endl;
    else
        cout<<"查找的数不存在"<<endl;
    cout<<endl<<"查询值为9的节点:"<<endl;
    cout<<"\t"<<"\t";
    a=A.search(9);
    if(a!=0)
        cout<<"在第"<<a<<"个节点"<<endl;
    else
        cout<<"查找的数不存在"<<endl;
return 0;


}





本人为初学者如果上述代码有不合理之处敬请读者指出。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值