线性表---顺序表

news/2024/5/20 7:13:20 标签: 顺序表

一.顺序表

(1)顺序存储
(2)随机存取
(3)数组下标从0开始,而线性表中元素序号是从1开始的。
(4)数组的长度要大于当前线性表的长度。

顺序表的实现:

顺序表的 “ 抽象数据类型 ” 定义在 顺序表存储结构下 用 c++ 的类实现:顺序表类!

#include<iostream>
using namespace std;
template<typename Datatype>
class Sequential{
  private:
    Datatype data[120];
    int length;
  public:
    Sequential(){length=0;}   // 空的顺序表
    Sequential(Datatype a[],int n);   //  有参构造函数
    ~Sequential(){length=0;}   //  析构函数
    int get_long(){return length;}  // 元素个数(长度)
    Datatype get_y(int i);  //  第i位上元素
    int get_x(Datatype x);   // x 的位置
    void insert_i(int i,Datatype x);  //  在i位置上插入x
    Datatype schu(int k);  // 输出k位置上元素
    int empty_data(){   // 是否为空
       if(length==0)
          return 0;
       else
        return 1;
       }
    void shuc();   //  输出全部元素
};
template<typename Datatype>
Sequential<Datatype>::Sequential(Datatype a[],int n){
 if(n > 120)
 {
  throw "参数异常";
 }
else
{
   for(int i=0;i<n;++i)
   {
       data[i]=a[i];
   }
   length=n;
 }
}

template<typename Datatype>
  Datatype Sequential<Datatype>::get_y(int i){
if(i<1||i>length)
{
    throw "查找位置异常";
 }
else
{
    return data[i-1];
}
 }

template<typename Datatype>
int Sequential<Datatype>::get_x(Datatype x){
 for(int i=0;i<length;++i)
{
  if(data[i]==x)
    return ++i;
}
return 0;
}
template<typename Datatype>
void Sequential<Datatype>::insert_i(int i,Datatype x){
 if(i<1||i>length)
{
   throw "上溢";
}
else
{
   for(int j=length;j>=i;j--)
   {
       data[j]=data[j-1];
   }
   data[i-1]=x;
   length++;
}
}
template<typename Datatype>
Datatype Sequential<Datatype>::schu(int k){
if(length==0)
{
    throw "下溢";
}
else
{
    if(k<1||k>length)
    {
        throw "输出位置错误";
    }
    else
    {
        Datatype x;
        x=data[k-1];
        for(int i=k;i<length;++i)
        {
            data[i-1]=data[i];
        }
        length--;
        return x;
    }
}
}
template<typename Datatype>
void Sequential<Datatype>::shuc(){
 for(int i=0;i<length;i++)
 {
   cout<<data[i]<<" ";
}
cout<<endl;
}

int main()
{
int l=0,c[150],j;
while(cin>>j&&j!=0)
{
    c[l]=j;
    ++l;
}
Sequential<int> biao(c,l);
biao.shuc();
cout<<"长度:"<<biao.get_long()<<endl;
cout<<" 第3个是:"<<biao.get_y(3)<<endl;
biao.insert_i(3,520);
cout<<" 520 的位置: "<<biao.get_x(520)<<endl;
biao.schu(5);
biao.schu(6);
cout<<" 是否为空: "<<biao.empty_data()<<endl;
biao.shuc();
cout<<"长度: "<<biao.get_long()<<endl;
return 0;
}

对于下标序号的理解:
一群人按顺序住进小平房里,第一个人住进0号房间,第二个人住进1号房间······第n个人住进n-1号房间。

-------课本小例题:约瑟夫环问题:

#include<iostream>
using namespace std;
int main()
{
int n,k,m;
cin>>n>>k>>m;
int a[120];
int yi=0;
for(int i=1;i<=n;++i)
{
	a[i] = i;
}
int y=n;
for(int x=k;y>1; )
{
	if(a[x]!=0)
	{
		++yi;
		if(yi==m)
		{
			a[x]=0;
			--y;
			yi=0;
		}
	}
	++x;
	if(x>n)
	{
		x=x%n;
	}
}
for(int i=1;i<=n;++i)
{
	if(a[i]!=0)
	  cout<<i;
}
return 0;
}

http://www.niftyadmin.cn/n/1260789.html

相关文章

2015阿里在线笔试题求两个字符串的最长子串

2、给定一个query和一个text&#xff0c;均由小写字母组成&#xff0c;要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。例如&#xff0c;query为“acbac”,text为”acaccbabb”,那么text中的”cba”为最长的连续出现在query中的字母序列&#xff0c;…

速学单链表

小问题&#xff1a;学了顺序表&#xff0c;为什么还要学操作更麻烦的单链表&#xff1f; 顺序表的实现是基于数组来完成的&#xff0c;而对于数组来说&#xff0c;从声明它的那一刻起&#xff0c;数组的长度就确定下来了。 同理&#xff0c;顺序表的大小的确定下来了。所以当你…

String,StringBuffer与StringBuilder的差别??

String 字符串常量StringBuffer 字符串变量&#xff08;线程安全&#xff09;StringBuilder 字符串变量&#xff08;非线程安全&#xff09; 简要的说&#xff0c; String 类型和 StringBuffer 类型的主要性能差别事实上在于 String 是不可变的对象, 因此在每次对 String 类型进…

宣化上人:安放经书所应该知道的常识

我们研究佛法的人&#xff0c;对於安放经书的常识应该知道。譬如三藏十二部一切经典&#xff0c;无论是哪一部&#xff0c;我们应该看着这一切经典比我们的生命更重要&#xff0c;看着这一切经典比任何珍宝更重要。《金刚经》上说&#xff1a;「若是经典所在之处&#xff0c;则…

容器添加元素操作

#include<iostream> #include<vector>using namespace std;int main() {// 删除元素的几个操作&#xff1a;int shuzu[]{1,2,3,4,5,6,7,8,9,10};vector<int> Vsz(shuzu, shuzu10);vector<int>::iterator tdqa;cout<<" before delete: &quo…

Linux系统Shutdown命令定时关机详解

Linux系统下的shutdown命令用于安全的关闭/重启计算机&#xff0c;它不仅可以方便的实现定时关机&#xff0c;还可以由用户决定关机时的相关参数。在执行shutdown命令时&#xff0c;系统会给每个终端&#xff08;用户&#xff09;发送一条屏显&#xff0c;提示关机操作。定时关…

python随手笔记

维度&#xff1a; 1.一维数据&#xff1a; 由对等关系的有序或无序数据构成。采用线性方式组织。 例如&#xff1a; 3.14 &#xff0c; 2.50 &#xff0c;13.14 &#xff0c; 列表和数组&#xff1a; 一组数据的有序结构 区别&#xff1a; 列表的数据类型可以不同。 数据的数…

JMeter学习参数化User Defined Variables与User Parameters

偶然发现JMeter中有两个元件&#xff08;User Defined Variables与User Parameters&#xff09;很相近&#xff0c;刚开始时我也没注意&#xff0c;两者有什么不同。使用时却发现两者使用场景有些不同&#xff0c;现在小结一下。 相同点&#xff1a;二者都是进行参数化的。 一、…