C/C++泛型编程实现数据结构之线性表

#C/C++泛型编程实现数据结构之线性表

泛型编程与面向对象编程的目标相同,即使重用代码和抽象通用概念的技术更加简单。但是面向对象编程强调编程的数据方面,泛型编程强调的是独立于特定数据类型。侧重点不同。

template 
class Liner_table {
private:
public:
	DataType data[MaxSize];
	int length;

public:
	Liner_table(DataType arr[]) {									//构造函数,初始化线性表
		length = 0;
		for (int i = 0; arr[i]!='\0'; i++) {
			if (i > MaxSize) { cout << "error" << endl;}
			data[i] = arr[i];
		}
	}
		
	int ListLength() {								//求线性表长度
		return  length;
	}

	DataType GetNode(int position) {						//返回线性表position位置上的元素值
		if(position <= length){
			return data[position];
		}
	}

	int LocateNode(DataType data_info) {					//在线性表中查找元素data_info的位置
		for (int i = 0; i <  length; i++)
		{
			if ( date[i] == data_info) {
				return i;
			}
			else {
				return -1;
			}
		}
	}

	bool InsertList(int position, DataType value) {			//在线性表位置为position前插入元素data
		if ( length + 1 < MaxSize) {
			for (int i = this->length+1; i > position; i++) {
				 data[i] =  data[i-1];
			}
			++ length;
			this->data[position] = value;
			return true;
		}
		else {
			return false;
		}
	}

	bool DeleteList(int position) {							//删除线性表位置为position的元素
		if ( length - 1 < 0) {
			return false;
		}
		else {
			for (int i = position; i <=  length - 1; i++) {
				 data[i] =  data[i + 1];
			}
			-- length;
			return true;
		}
	}

	void purge() {											//删除线性表中所有的重复元素
		for (int i = 0; i < length; i++) {
			for (int j = i + 1; j <= length; j++) {
				if (data[i] == GetNode(j)) {
					DeleteList(i);
				}
			}
		}
	}

	DataType Find_max_value() {
		DataType max = GetNode(0);
		for (int i = 1; i <= length; i++) {
			if (max < GetNode(i)) {
				max = GetNode(i);
			}
		}
		return max;
	}
};

你可能感兴趣的:(C/C++,数据结构,泛型编程,数据结构,泛型编程,C/C++)