| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2873 人关注过本帖
标题:如何用c++实现静态链表的插入删除
只看楼主 加入收藏
草种的幸福
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:7
专家分:5
注 册:2012-11-2
收藏
 问题点数:0 回复次数:3 
如何用c++实现静态链表的插入删除
如何用c++实现静态链表的插入删除
搜索更多相关主题的帖子: 如何 
2012-11-13 21:15
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
构造类  定义对象  操作对象
2012-11-13 23:19
chenhm1991
Rank: 2
等 级:论坛游民
帖 子:8
专家分:24
注 册:2012-11-11
收藏
得分:0 
//顺序线性表
#include <iostream>
using namespace std;
const int MaxSize=100;
template <typename T>
class SeqList
{
    public:
        SeqList(){length=0;}                 //无参构造函数
        SeqList(T a[],int n);                //有参构造函数
        ~SeqList(){}                         //析构函数为空
        int Length(){return length;}         //求线性表的长度
        T Get(int i);                        //按位查找,返回顺序表的第i个元素
        int Locate(T x);                     //按值查找,求线性表中值为x的元素序号
        void Insert(int i,T x);              //在线性表中第i个位置插入元素x
        T Delete(int i);                     //删除线性表中第i个元素
        void PrintList();                    //遍历线性表,按序号依次输出各元素
    private:
        T data[MaxSize];                     //存放数据元素的数组
        int length;                          //线性表的长度
};
//有参构造函数
template <typename T>
SeqList<T>::SeqList(T a[],int n)
{
    if(n>MaxSize)
        throw "参数非法";
        for(int i=0;i<n;++i)
            data[i]=a[i];
        length=n;
}
//插入操作,在线性表中第i个位置插入元素x
template <typename T>
void SeqList<T>::Insert(int i,T x)
{
    if(length>=MaxSize)
        throw "上溢";
    if(i<1||i>length+1)
        throw "输入位置非法,超出顺序表范围";
    for(int j=length;j>=i;j--)
        data[j]=data[j-1];
    data[i-1]=x;
    length++;
}
//删除操作,删除线性表中第i个元素
template <typename T>
T SeqList<T>::Delete(int i)
{
    if(length==0)
        throw "下溢";            //表空
    if(i<1||i>length)
        throw "超出范围";
    T x=data[i-1];
    for(int j=i;j<length;++j)
        data[j-1]=data[j];
    length--;
    return x;
}
//按位查找,返回顺序表的第i个元素
template <typename T>
T SeqList<T>::Get(int i)
{
    if(i<1||i>length)
        throw "输入范围错误";
    else
        return data[i-1];
}
//按值查找,求线性表中值为x的元素序号
template <typename T>
int SeqList<T>::Locate(T x)
{
    for(int j=0;j<length;++j)
    {
        if(data[j]==x)
            return j+1;
    }
    return 0;        //说明查找失败
}
template <typename T>
//输出线性表
void SeqList<T>::PrintList()
{
    cout<<"The SeqList is :"<<endl;
    for(int i=0;i<length;++i)
        cout<<data[i]<<' ';
    cout<<endl;
}
2012-11-14 22:01
chenhm1991
Rank: 2
等 级:论坛游民
帖 子:8
专家分:24
注 册:2012-11-11
收藏
得分:0 
//顺序线性表
#include <iostream>
using namespace std;
const int MaxSize=100;
template <typename T>
class SeqList
{
    public:
        SeqList(){length=0;}                 //无参构造函数
        SeqList(T a[],int n);                //有参构造函数
        ~SeqList(){}                         //析构函数为空
        int Length(){return length;}         //求线性表的长度
        T Get(int i);                        //按位查找,返回顺序表的第i个元素
        int Locate(T x);                     //按值查找,求线性表中值为x的元素序号
        void Insert(int i,T x);              //在线性表中第i个位置插入元素x
        T Delete(int i);                     //删除线性表中第i个元素
        void PrintList();                    //遍历线性表,按序号依次输出各元素
    private:
        T data[MaxSize];                     //存放数据元素的数组
        int length;                          //线性表的长度
};
//有参构造函数
template <typename T>
SeqList<T>::SeqList(T a[],int n)
{
    if(n>MaxSize)
        throw "参数非法";
        for(int i=0;i<n;++i)
            data[i]=a[i];
        length=n;
}
//插入操作,在线性表中第i个位置插入元素x
template <typename T>
void SeqList<T>::Insert(int i,T x)
{
    if(length>=MaxSize)
        throw "上溢";
    if(i<1||i>length+1)
        throw "输入位置非法,超出顺序表范围";
    for(int j=length;j>=i;j--)
        data[j]=data[j-1];
    data[i-1]=x;
    length++;
}
//删除操作,删除线性表中第i个元素
template <typename T>
T SeqList<T>::Delete(int i)
{
    if(length==0)
        throw "下溢";            //表空
    if(i<1||i>length)
        throw "超出范围";
    T x=data[i-1];
    for(int j=i;j<length;++j)
        data[j-1]=data[j];
    length--;
    return x;
}
//按位查找,返回顺序表的第i个元素
template <typename T>
T SeqList<T>::Get(int i)
{
    if(i<1||i>length)
        throw "输入范围错误";
    else
        return data[i-1];
}
//按值查找,求线性表中值为x的元素序号
template <typename T>
int SeqList<T>::Locate(T x)
{
    for(int j=0;j<length;++j)
    {
        if(data[j]==x)
            return j+1;
    }
    return 0;        //说明查找失败
}
template <typename T>
//输出线性表
void SeqList<T>::PrintList()
{
    cout<<"The SeqList is :"<<endl;
    for(int i=0;i<length;++i)
        cout<<data[i]<<' ';
    cout<<endl;
}
2012-11-14 22:02
快速回复:如何用c++实现静态链表的插入删除
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027130 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved