`
lovelimx
  • 浏览: 20526 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

顺序线性表

阅读更多

开发环境:Eclipse

参考书籍:《数据结构》——清华大学出版社——殷人昆

 

 

SeqList.h

 

 

/*
 * SeqList.h
 *
 *  Created on: Jun 5, 2010
 *      Author: limx
 */

#include<iostream.h>
#include<stdlib.h>

const int defaultSize = 100;
template<class T>
class SeqList {
protected:
	T * data;
	//the size of the seqList
	int maxSize;
	//the array subscript of last element
	int last;
	void reSize(int newSize);
public:
	//defaultSize is the default parameter;
	SeqList(int sz = defaultSize);
	virtual ~SeqList();
	//const is mean that the parameter inside can not change
	int size() const {
		return maxSize;
	}
	//get the element at the array subscript i;
	bool getData(int i, T& x);
	T getData(int i);
	//copy the seqlist constructor
	SeqList(SeqList<T>& L);
	int length() const {
		return last;
	}
	//search the element by value x
	int search(T x) const;
	//insert element x into the array at subscript i ;
	bool insert(int i, T & x);
	//remove element of array subscript at i ;
	bool remove(int i, T&x);
	void input();
	void output();
	SeqList<T> operator =(SeqList<T> & L);
};

 

 

SeqList.cpp

 

 

/*
 * SeqList.cpp
 *
 *  Created on: Jun 5, 2010
 *      Author: limx
 */
#include"SeqList.h"
template<class T>
SeqList<T> SeqList<T>::operator =(SeqList<T> & L) {
	maxSize = L.size();
	last = L.length();
	data = new T[maxSize];
	if (data == NULL) {
		{
			cerr << "memory error !" << endl;
			exit(1);
		}
	}
	for (int i = 0; i <= last; i++) {
		data[i] = L.getData(i);
	}
}
template<class T>
T SeqList<T>::getData(int i) {
	if (0 <= i && i <= last) {
		return data[i];
	} else {
		return NULL;
	}
}
template<class T>
bool SeqList<T>::getData(int i, T& x) {
	if (0 <= i && i <= last) {
		x = data[i];
		return true;
	} else {
		return false;
	}
}
template<class T>
SeqList<T>::SeqList(SeqList<T>& L) {
	maxSize = L.size();
	last = L.length();
	data = new T[maxSize];
	if (data == NULL) {
		{
			cerr << "memory error !" << endl;
			exit(1);
		}
	}
	for (int i = 0; i <= last; i++) {
		data[i] = L.getData(i);
	}

}
template<class T>
//delete the element at i ,i is the array subscript;
bool SeqList<T>::remove(int i, T&x) {
	if (last < 0) {
		return false;
	}
	if (i < 0 || i > last + 1) {
		return false;
	}
	x = data[i];
	for (int j = i; j <= last; j++) {
		data[j] = data[j + 1];
	}
	last--;
}
template<class T>
SeqList<T>::SeqList(int sz) {
	// TODO Auto-generated constructor stub
	if (sz > 0) {
		maxSize = sz;
		last = -1;
		data = new T[maxSize];
		//		null must be upper
		if (data == NULL) {
			cerr << "memory error!" << endl;
			exit(1);
		}
	}

}

template<class T>
SeqList<T>::~SeqList() {
	// TODO Auto-generated destructor stub
}
//insert the element at the location at ith,i is an array subscript;
template<class T>
bool SeqList<T>::insert(int i, T & x) {
	if (last == maxSize - 1) {
		return false;
	} else if (i < 0 || i > last + 1) {
		return false;
	}
	for (int j = last; j >= i; j--) {
		data[j + 1] = data[j];
	}
	data[i] = x;
	last++;
	return true;
}
template<class T>
int SeqList<T>::search(T x) const {
	for (int i = 0; i <= last; i++) {
		if (data[i] == x) {
			return i;
		}
	}
	return -1;
}
template<class T>
void SeqList<T>::input() {
	cout << "begin to create seqlist:" << endl;
	while (1) {
		cin >> last;
		if (last <= maxSize - 1) {
			break;
		}
		cout << "out of index" << maxSize - 1 << ":" << endl;
	}
	cout << "input the elements plz" << endl;
	for (int i = 0; i <= last; i++) {
		cout << i + 1 << ":";
		cin >> data[i];
	}
}

template<class T>
void SeqList<T>::output() {
	cout << "the last element of location in the current list is :" << last
			<< endl;
	for (int i = 0; i <= last; i++) {
		cout << "#" << i << ":" << data[i] << endl;
	}
}

 

main.cpp

 

 

/*
 * main.cpp
 *
 *  Created on: Jun 5, 2010
 *      Author: limx
 */

#include<iostream.h>
#include"SeqList.cpp"
using namespace std;
int main() {
	SeqList<char> sl(20);
	int index;
	char x;
	/*I need to read about array*/
	/*int* x = new int[10];*/
	cout << "input the elements" << endl;
	sl.input();
	sl.output();
	cout << "the size of sl" << sl.size();
	cout << "enter the element to search:" << endl;
	cin >> x;
	cout << "the element to search is at " << sl.search(x) << endl;
	cout << "enter the subscript of the element and the element to insert:"
			<< endl;
	cin >> index >> x;
	sl.insert(index, x);
	sl.output();
	cout << "cope the array of sl" << endl;
	SeqList<char> sl2(20);
	sl2 = sl;
	cout << "the element of sl2 is below:" << endl;
	sl2.output();
	return 0;
}

 

result :

 

 

input the elements
begin to create seqlist:
4
input the elements plz
1:a
2:b
3:c
4:d
5:e
the last element of location in the current list is :4
#0:a
#1:b
#2:c
#3:d
#4:e
the size of sl20enter the element to search:
a
the element to search is at 0
enter the subscript of the element and the element to insert:
5
f
the last element of location in the current list is :5
#0:a
#1:b
#2:c
#3:d
#4:e
#5:f
cope the array of sl
the element of sl2 is below:
the last element of location in the current list is :5
#0:a
#1:b
#2:c
#3:d
#4:e
#5:f
分享到:
评论

相关推荐

    顺序线性表的基本操作

    数据结构中的 顺序线性表的基本操作,适合刚学数据结构的同学用

    C语言实现的顺序线性表

    本篇文章将深入探讨如何使用C语言来实现顺序线性表,包括其基本操作,如创建、插入数据、获取数据、删除数据、获取存放的数据量、清空线性表以及销毁线性表。 顺序线性表是由一组具有相同类型元素构成的序列,这些...

    数据结构---顺序线性表(SqList C++)

    顺序线性表(Sequential List,简称 SqList)是一种常见的数据结构,它按照元素的顺序存储数据,通常在内存中连续分配空间。在本项目中,我们使用 C++ 实现了一个基于顺序线性表的数据结构,并且支持从文本文件读取...

    顺序线性表的JAVA实现代码

    顺序线性表的JAVA实现代码,希望对学习数据结构的同学们有所帮助!

    顺序线性表C语言实现

    顺序线性表是一种基本的数据结构,它在计算机科学和编程中有着广泛的应用。这个压缩包文件包含的"顺序线性表代码"很可能是C语言实现的顺序存储结构,用于理解和操作顺序线性表。下面我们将深入探讨顺序线性表的概念...

    数据结构链式线性表以及顺序线性表

    在数据结构领域,我们通常会根据存储方式的不同将其分为两种主要类型:顺序线性表和链式线性表。 **顺序线性表**是一种在内存中连续存储的数据结构,每个元素都有一个唯一的索引位置,索引从0开始。例如,如果一个...

    顺序线性表实现代码

    ### 顺序线性表实现代码知识点解析 #### 1. 线性表的基本概念 线性表是一种最基本且常用的数据结构,它是由相同类型的数据元素组成的有限序列。线性表中的元素之间存在一对一的关系,即除了第一个和最后一个元素外...

    两个非递减存储顺序线性表归并为非递减顺序线性表

    构造函数用于分配内存空间,析构函数用于释放内存空间,输入函数用于输入元素,输出函数用于输出元素,归并函数用于将两个非递减顺序线性表归并为一个非递减顺序线性表。 构造函数和析构函数 构造函数用于分配内存...

    顺序线性表的建立、插入及删除

    顺序线性表是一种基本的数据结构,它在计算机科学中扮演着重要的角色,特别是在数组和链表等基础数据结构的学习中。顺序线性表是通过数组实现的,元素按线性顺序存储,每个元素都有一个固定的位置,可以通过索引来...

    华科计算机学院数据结构顺序线性表

    【顺序线性表】是数据结构中的一种基本存储结构,它是由一组相同类型的数据元素构成的有限序列,其中每个元素都有一个唯一的序号,逻辑上相邻的元素在内存中也是物理相邻的。在顺序线性表中,数据的访问通常采用数组...

    顺序线性表的初始化、插入与输出

    ### 数据结构:顺序线性表的初始化、插入与输出(C/C++) #### 知识点解析 在计算机科学中,数据结构是组织和存储数据的一种特定方式,它允许高效地进行数据访问和修改。顺序线性表是一种基本的数据结构,它通过一...

    顺序线性表1.CPP

    实训课时候上的顺序线性表,不错,大家可以下下来借鉴一下发。。。。

    实验报告(顺序线性表)1

    顺序线性表是指在内存中连续分配存储空间的数据结构,通常用数组来表示。在报告中提到的`DestroyList(SqList &L)`函数,其主要功能是销毁顺序线性表。这个函数会释放表L所占用的内存空间,确保在程序运行过程中不会...

    顺序线性表.cpp

    顺序线性表.cpp

    通讯录顺序线性表系统.cpp

    通讯录顺序线性表系统.cpp

    顺序线性表(1).cpp

    顺序线性表(1).cpp

    通讯录顺序线性表的删除.cpp

    通讯录顺序线性表的删除.cpp

    数据结构C语言版线性表算法2.4-数据结构c语言版严蔚敏顺序线性表12个基本操作及算法的实现... 定义线性表节点的结构.pdf

    在这个场景中,我们关注的是C语言实现的顺序线性表,由严蔚敏教授的经典教材《数据结构》中的内容作为指导。顺序线性表是指线性表的元素在内存中是连续存储的,便于进行快速访问。 首先,我们需要了解线性表的节点...

Global site tag (gtag.js) - Google Analytics