《数据结构》自己练习用的代码,顺序表的简单实现,实现了一部分而已
// 请随意使用和修改
#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语言实现顺序表的多种功能
顺序表的优点在于其简单易懂的结构和高效的访问性能,尤其是在连续内存空间中存储元素时。 首先,我们需要理解顺序表的概念。顺序表是由数组实现的一种线性表,其中元素按照它们在内存中的存储位置顺序进行排列。...
5. **效率考虑**:虽然顺序表提供了简单的实现,但在插入和删除操作上效率较低,因为可能涉及大量元素的移动。对于频繁的插入和删除操作,链表等其他数据结构可能更为合适。 这个实验提供了很好的实践机会,让学生...
本文将深入探讨顺序表的概念、实现方法以及相关操作。 顺序表的基本概念: 顺序表是一种线性数据结构,其内部元素按照特定顺序存储,通常以数组的形式实现。数组中每个元素都有一个唯一的整数索引,从0开始,表示...
对于顺序表,线性查找是最简单的实现方式,时间复杂度为O(n)。更高效的查找方法,如二分查找,只适用于已排序的顺序表。 9. **判断线性表是否为空**: 检查顺序表是否为空通常只需检查其长度是否为0,或者查看首...
尽管在大数据量下,顺序表可能不如其他数据结构(如二叉树或哈希表)效率高,但对于中小规模的城市数据,它的简单性和直观性使得它成为一种实用的选择。同时,系统的ADT设计遵循了良好的软件工程原则,有助于提高...
本实验报告主要探讨了如何使用C语言中的顺序表来实现一个简易的学生信息管理系统。该系统能够对学生的学号、姓名和成绩等信息进行管理,具体实现了以下功能: 1. **根据指定的学生个数逐个输入学生信息;** 2. **...
通过这样的算法实现,我们可以快速地完成奇偶排序,同时保持了顺序表的原始顺序特性,不涉及元素的插入和删除操作,只是简单地重新排列了已有元素的位置。 总的来说,这是一个简单的线性时间复杂度算法,适用于对...
本项目主要关注顺序表的各种功能实现,包括插入、删除、清空和退出等操作。下面将详细介绍这些功能以及它们在实际应用中的重要性。 顺序表,顾名思义,是指元素按照线性顺序存储的数据结构,通常使用数组来实现。...
### 学生信息管理系统的顺序表实现 #### 案例背景与目标 在教育领域,班级不仅是学生学习和生活的基础单位,也是管理和组织教学活动的重要载体。因此,设计一个有效的班级管理系统对于提升学校的管理水平至关重要...
在本主题中,我们将重点关注“顺序表”,这是一种简单但基础的数据结构。 顺序表是一种线性数据结构,其中元素按照它们被添加的顺序存储在一块连续的内存空间里。这种表的操作通常包括创建(建立)、插入、删除、...
本文将深入探讨顺序表的基本概念、操作以及实现方式。 顺序表,顾名思义,是数据元素按线性顺序排列的一种数据结构。在内存中,顺序表通常表现为一个一维数组,每个元素在数组中的位置对应其在表中的顺序。顺序表的...
在本实验中,我们将关注一种基础且重要的数据结构——顺序表,它在C++中得到了实现。顺序表是一种线性数据结构,其中元素按照它们被添加的顺序存储在连续的内存空间中。 首先,我们要理解顺序表的基本操作。顺序表...