顺序表(C++)

最近准备找工作了,在复习数据结构,下面是用C++写的顺序表的一个类(头文件)

//公元2013年3月15日
//Sequence List--By Paul

#ifndef _SeqList_
#define _SeqList_

const int defaultSize=100;

template <typename Type> class SeqList{
public:
	SeqList(int SZ=defaultSize):m_nmaxsize(SZ),m_ncurrentsize(-1){
		if (SZ>0){
			m_elements=new Type[m_nmaxsize];
		}
	}

	~SeqList(){
		delete[] m_elements;
	}
	int Length() const{
		return m_ncurrentsize+1;
	}
	int Find(Type x) const;
	int IsElement(Type x) const;
	int Insert(Type x,int i);
	int Remove(Type x);
	int IsEmpty(){
		return m_ncurrentsize==-1;
	}
	int IsFull()
	{
		return m_ncurrentsize==m_nmaxsize-1;
	}
	Type Get(int i){
		return i<0||i>m_ncurrentsize?(cout<<"can't find the element"<<endl,0):m_element[i];
	}
	void Print();
private:
	Type *m_element;
	const int m_nmaxsize;
	int m_ncurrentsize;

};

//部分函数的实现。。。。。

template <typename Type> int SeqList<Type>::Find(Type x) const
{
	for(int i=0;i<m_ncurrentsize;i++)
	{
		if(m_element[i]==x)
			return i;
	}
	cout<<"Can't find the element  you want to find"<<endl;
	return -1;
}

template <typename Type> int SeqList<Type>::IsElement(Type x) const
{
	if(Find(X)==-1)
		return 0;
	return 1;
}

template <typename Type> int SeqList<Type>::Insert(Type x,int i)
{
	if(i<0||i>mm_ncurrentsize+1||m_ncurrentsize==m_nmaxsize-1)
	{
		cout<<"The operation is illegal"<<endl;
		return 0;
	}
	m_ncurrentsize++;
	for(int j=m_ncurrentsize;j>i;j--)
	{
		m_element[j]=m_element[j-1];
	}
	m_element[i]=x;
	return 1;
}

template <typename Type> int SeqList<Type>::Remove(Type x){
    int size=m_ncurrentsize;
    for(int i=0;i<m_ncurrentsize;){
        if(m_elements[i]==x){
            for(int j=i;j<m_ncurrentsize;j++){
                m_element[j]=m_elements[j+1];
            }
            m_ncurrentsize--;
            continue;
        }
        i++;
    }
    if(size==m_ncurrentsize){
        cout<<"can't find the element you want to remove"<<endl;
        return 0;
    }
    return 1;
}
 
template <typename Type> void SeqList<Type>::Print(){
    for(int i=0;i<=m_ncurrentsize;i++)
        cout<<i+1<<":\t"<<m_element[i]<<endl;
    cout<<endl<<endl;
}

#endif

(好像很久没写C++的代码了,比较生疏了,慢慢写,慢慢熟悉)


转载于:https://www.cnblogs.com/NewWork/archive/2013/03/17/3260603.html

顺序表是一种常见的数据结构,用于存储一组具有相同类型的元素。它的基本操作包括创建、查找、插入和删除等。 在C语言中,可以通过使用数组来实现顺序表。我们可以定义一个数组来存储顺序表的元素,然后通过索引来访问和操作其中的元素。引用中的代码展示了一个简单的顺序表的例子,它使用了C语言来实现。在这个例子中,我们可以看到如何创建一个顺序表、插入元素、删除元素以及查找元素的前驱和后继。 引用中的代码是一个测试顺序表基本操作的例子。它使用了一个自定义的List类来实现顺序表,并对其进行了各种操作,包括插入元素、删除元素、查找元素的前驱和后继以及遍历整个顺序表顺序表的结构体定义可以根据具体的需求进行定义。在引用中的代码中,定义了一个结构体ConnTimeout,其中包含了一个int类型的fd和一个time_t类型的timeout成员变量。这个结构体可以用来表示连接超时的信息。 总而言之,顺序表是一种常见的数据结构,可以通过使用数组来实现。在C语言中,可以使用数组和相关的操作来创建、查找、插入和删除顺序表中的元素。结构体的定义可以根据具体的需求进行自定义。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [数据结构顺序表c++代码](https://download.csdn.net/download/qq_46546083/13458006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C++数据结构之顺序表(模板类实现)](https://blog.csdn.net/sagjhdj/article/details/123260460)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【数据结构】顺序表(C++)](https://blog.csdn.net/qq_51604330/article/details/120600041)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值