数据结构--线性表操作

基于顺序表:

/*
	一个线性表的类,实现线性表的操作
	基于顺序表的线性表操作
*/
#include
#include	//使用重新分配内存的placement new ,须包含new,
using namespace std;

typedef int Node;//结点数据类型

class list
{
public:
	list(int leng=0)	//构造方法
	{
		this->length=leng;
		l=new Node[leng];
	}
	~list()	//析构方法
	{
		this->length = 0;
		this->l = NULL;
	}
	void clearList()	//清空线性表
	{
		this->length=0;
	}
	bool listEmpty()	//判断线性表是否为空
	{
		return this->length==0 ? true : false;
	}
	int listLength()	//返回线性表长度
	{
		return this->length;
	}
	Node getElem(int i)	//返回第i个元素的值
	{
		if(i>=0 && ilength)
		{
			return this->l[i];
		}
		else
		{
			exit(1);	//i值不符合规定
		}
	}
	Node priorElem(int i)	//返回第i-1个元素的值
	{
		if(i>0 && ilength)
		{
			return this->l[i-1];
		}
		else
		{
			exit(1);	//i值不符合规定
		}
	}	
	Node nextElem(int i)	//返回第i+1个元素的值
	{
		if(i>=0 && ilength-1)
		{
			return this->l[i+1];
		}
		else
		{
			exit(1);	//i值不符合规定
		}
	}
	void listInsert(int i, Node e)	//在第i个元素之前插入元素e
	{
		this->length++;
		Node *m = new(l) Node[this->length];
		int j;
		for(j=this->length; j>i; j--)
		{
			m[j] = m[j-1];
		}
		m[j] = e;
		l = m;
	}
	Node listDelete(int i)	//删除第i个元素,并返回其值
	{
		Node re=l[i];
		for(int j=i; jlength-1; j++)
		{
			l[j] = l[j+1];
		}
		this->length--;
		return re;
	}
private:
	Node *l;
	int length;
};

int main()	//测试主函数
{
	list a(0);
	cout<



基于链表:


/*
	一个线性表的类,实现线性表的操作
	基于   【链表】  的线性表操作
*/
#include
using namespace std;

typedef int TYPE;//结点存储的数据类型

typedef struct Node	//结点结构体
{
	TYPE content;
	Node *next;
};

class list
{
public:
	list(int leng=0)	//构造方法
	{
		this->length=leng;
		header=new Node;
		header->next = NULL;
		Node *p = header;
		for(int i=0; ilength; i++)
		{
			p->next = new Node;
			p = p->next;
			p->next = NULL;
		}
	}
	~list()	//析构方法
	{
		this->length = 0;
		this->header = NULL;
	}
	void clearList()	//清空线性表
	{
		this->length=0;
	}
	bool listEmpty()	//判断线性表是否为空
	{
		return this->length==0 ? true : false;
	}
	int listLength()	//返回线性表长度
	{
		return this->length;
	}
	TYPE getElem(int i)	//返回第i个元素的值
	{
		if(i>=0 && ilength)
		{
			Node *p = new Node;
			p=this->header;
			int j=-1;
			while(j != i)
			{
				p = p->next;
				j++;
			}
			return p->content;
		}
		else
		{
			exit(1);	//i值不符合规定
		}
	}
	
	void listInsert(int i, TYPE e)	//在第i个元素之前插入元素e
	{
		Node *temp = new Node;	//创造结点
		temp->content = e;
		
		this->length++;
		Node *p = this->header;
		int j=0;
		while(j != i)
		{
			p = p->next;
			j++;
		}
		temp->next = p->next;
		p->next = temp;
	}
	TYPE listDelete(int i)	//删除第i个元素,并返回其值
	{
		Node *temp = new Node;	//创造结点
		
		this->length--;
		Node *p = this->header;
		int j=0;
		while(j != i)
		{
			p = p->next;
			j++;
		}
		temp = p->next;
		p->next = p->next->next;
		
		return temp->content;
	}
	
private:
	Node *header;
	int length;
};

int main()	//测试主函数
{
	list a(0);
	cout<


你可能感兴趣的:(C/C++,数据结构,list,null,class,测试,struct)