`
willzh
  • 浏览: 300897 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

顺序表的简单实现

    博客分类:
  • c++
阅读更多
《数据结构》自己练习用的代码,顺序表的简单实现,实现了一部分而已

// 请随意使用和修改
#include <iostream>
#include <cstdlib>
using namespace std;

template<class Type> class SeqList
{

	public:
		SeqList()
		{
			data = NULL;
			MaxSize = 0;
			len = 0;
		}
		SeqList(int size)
		{
			data = new Type[size];
			if(data==NULL)
			{
				cerr<<"Memory allocation failare!"<<endl;
				exit(1);
			}
			MaxSize = size;
			len = 0;
		}
		~SeqList()
		{
			delete[] data;
		}

		int insertItem(Type elem, int index)
		{
			if(index<0 || index>len)
			{
				cerr<<"Error: out of range"<<endl;
				exit(1);
			}
			for(int i=len; i>index; i--)data[i] = data[i-1];
			data[index] = elem;
			return ++len;
		}

		int appendItem(Type elem)
		{
			return insertItem(elem, len);
		}

		int deleteItem(int index)
		{
			if(index<0 || index>len)
			{
				cerr<<"Error: out of range"<<endl;
				exit(1);
			}
			for(int i=index;i<len-1;i++)data[i] = data[i+1];
			return --len;
		}
		
		void select_sort()
		{
			int min,t;
			for(int i=0;i<len-1;i++)
			{
				min = i;
				for(int j=i+1;j<len;j++)
					if(data[j]<data[min])min=j;
				t = data[i];
				data[i] = data[min];
				data[min] = t;
			}
		}
		
		void insert_sort()
		{
			Type t;
			int j;
			for(int i=len-1;i>0;i--)
			{
				if(data[i]<data[i-1])
				{
					t = data[i];
					data[i] = data[i-1];
					data[i-1] = t;
				}
			}
			for(int i=2;i<len;i++)
			{
				j = i;
				t = data[i];
				while(t<data[j-1])
				{
					data[j] = data[j-1];
					j--;
				}
				data[j] = t;
			}
		}

		Type get(int index)
		{
			if(index>=0 && index<len)
			{
				return data[index];
			}
			exit(1);
		}

		Type operator[](int index)
		{
			if(index>=0 && index<len)
			{
				return data[index];
			}
		}
		int length()
		{
			return len;
		}

	private:
		Type* data;
		int MaxSize;

		int len;
};

int main()
{
	SeqList<double> seq1(10), seq2(13);
	seq1.insertItem(1.24, 0);
	seq1.insertItem(2.24, 1);
	seq1.appendItem(10.0);
	seq1.appendItem(13.0);
	seq1.appendItem(3.1415926);
	seq1.appendItem(4.16);
	seq1.appendItem(1.16);

	cout<<"the first element of seq1: "<<seq1.get(0)<<endl;
	cout<<"the second element of seq1: "<<seq1[1]<<endl;
	cout<<"length: "<<seq1.length()<<endl;

	seq1.deleteItem(2);
	//seq1.select_sort();
	seq1.insert_sort();
	for(int i=0;i<seq1.length();i++)
	{
		cout<<seq1[i]<<" ";
	}
	cout<<endl;
	seq2.appendItem(2);
	seq2.appendItem(1);
	seq2.appendItem(3);
	seq2.insert_sort();
	for(int i=0;i<seq2.length();i++)
	{
		cout<<seq2[i]<<" ";
	}
	cout<<endl;

	return 0;
}

分享到:
评论

相关推荐

    C语言顺序表简单实现

    ### C语言顺序表简单实现详解 #### 一、顺序表简介 顺序表是线性表的一种存储结构,其中的数据元素在内存中是连续存放的。本文档将通过一系列函数介绍如何在C语言中实现基本的顺序表操作。 #### 二、顺序表的基本...

    顺序表的实现

    - **实现简单**:相比于链表等其他数据结构,顺序表的实现代码简洁,易于理解和维护。 缺点: - **空间预分配**:需要预先分配足够的内存空间,可能导致空间浪费。 - **插入和删除效率低**:在表中间插入或删除元素...

    顺序表C++算法实现

    在这个“顺序表C++算法实现”中,作者显然是根据《数据结构(用面向对象方法与C++语言描述)》(第二版)一书中的概念,编写了一个简单的C++类,该类包含了顺序表的基本操作,如插入、删除和排序。 首先,我们来...

    c语言实现顺序表简单易懂

    在众多的数据结构中,顺序表是一种基础且重要的线性数据结构,它通过数组来实现,元素在内存中是连续存放的。本次文章将深入解析C语言实现顺序表的方法,为初学者提供一个清晰、易懂的学习路径。 ### 一、顺序表的...

    顺序表测试1_WordforWord_用顺序表实现词频统计_

    在本文中,我们将深入探讨如何使用C语言实现一个顺序表来统计单词的出现频率。顺序表是一种基础的数据结构,它将元素存储在一个连续的内存区域中,通过索引来访问元素,具有简单直观的操作方式。 首先,我们需要...

    用c语言实现顺序表

    用c语言实现顺序表的多种功能

    顺序表实现城市信息记录

    顺序表的优点在于其简单易懂的结构和高效的访问性能,尤其是在连续内存空间中存储元素时。 首先,我们需要理解顺序表的概念。顺序表是由数组实现的一种线性表,其中元素按照它们在内存中的存储位置顺序进行排列。...

    数据结构顺序表(C++实现)

    5. **效率考虑**:虽然顺序表提供了简单的实现,但在插入和删除操作上效率较低,因为可能涉及大量元素的移动。对于频繁的插入和删除操作,链表等其他数据结构可能更为合适。 这个实验提供了很好的实践机会,让学生...

    顺序表(表的顺序实现)及其详细方法

    本文将深入探讨顺序表的概念、实现方法以及相关操作。 顺序表的基本概念: 顺序表是一种线性数据结构,其内部元素按照特定顺序存储,通常以数组的形式实现。数组中每个元素都有一个唯一的整数索引,从0开始,表示...

    有关顺序表的课程设计

    对于顺序表,线性查找是最简单的实现方式,时间复杂度为O(n)。更高效的查找方法,如二分查找,只适用于已排序的顺序表。 9. **判断线性表是否为空**: 检查顺序表是否为空通常只需检查其长度是否为0,或者查看首...

    城市数据库系统基于顺序表实现

    尽管在大数据量下,顺序表可能不如其他数据结构(如二叉树或哈希表)效率高,但对于中小规模的城市数据,它的简单性和直观性使得它成为一种实用的选择。同时,系统的ADT设计遵循了良好的软件工程原则,有助于提高...

    数据结构实验报告1-顺序表实现简易的学生信息管理系统(C语言)

    本实验报告主要探讨了如何使用C语言中的顺序表来实现一个简易的学生信息管理系统。该系统能够对学生的学号、姓名和成绩等信息进行管理,具体实现了以下功能: 1. **根据指定的学生个数逐个输入学生信息;** 2. **...

    使用顺序表实现奇偶排序

    通过这样的算法实现,我们可以快速地完成奇偶排序,同时保持了顺序表的原始顺序特性,不涉及元素的插入和删除操作,只是简单地重新排列了已有元素的位置。 总的来说,这是一个简单的线性时间复杂度算法,适用于对...

    顺序表的功能实现

    本项目主要关注顺序表的各种功能实现,包括插入、删除、清空和退出等操作。下面将详细介绍这些功能以及它们在实际应用中的重要性。 顺序表,顾名思义,是指元素按照线性顺序存储的数据结构,通常使用数组来实现。...

    学生信息管理系统的顺序表实现

    ### 学生信息管理系统的顺序表实现 #### 案例背景与目标 在教育领域,班级不仅是学生学习和生活的基础单位,也是管理和组织教学活动的重要载体。因此,设计一个有效的班级管理系统对于提升学校的管理水平至关重要...

    数据结构 顺序表操作

    在本主题中,我们将重点关注“顺序表”,这是一种简单但基础的数据结构。 顺序表是一种线性数据结构,其中元素按照它们被添加的顺序存储在一块连续的内存空间里。这种表的操作通常包括创建(建立)、插入、删除、...

    顺序表的基本操作及实现

    本文将深入探讨顺序表的基本概念、操作以及实现方式。 顺序表,顾名思义,是数据元素按线性顺序排列的一种数据结构。在内存中,顺序表通常表现为一个一维数组,每个元素在数组中的位置对应其在表中的顺序。顺序表的...

    数据结构-顺序表C++实现

    在本实验中,我们将关注一种基础且重要的数据结构——顺序表,它在C++中得到了实现。顺序表是一种线性数据结构,其中元素按照它们被添加的顺序存储在连续的内存空间中。 首先,我们要理解顺序表的基本操作。顺序表...

Global site tag (gtag.js) - Google Analytics