zoukankan      html  css  js  c++  java
  • TZOJ 1214: 数据结构练习题――线性表操作

    描述

    请你定义一个线性表,可以对表进行“在某个位置之前插入一个元素”、“删除某个位置的元素”、“清除所有元素”、“获取某个位置的元素”等操作。键盘输入一些命令,可以执行上述操作。本题中,线性表元素为整数,线性表的第一个元素位置为1。线性表的最大长度为1000。

    输入

    各个命令以及相关数据,它们对应的格式如下:

    在某个位置之前插入操作:insert,接下来的一行是插入的组数n,下面是n行数据,每行数据有两个值,分别代表位置与插入的元素值

    清除线性表:clear

    获取某个位置的元素:getelem,接下来一行是需要获取的元素位置

    删除某个位置的元素:delete,接下来一行是被删除的元素位置

    当输入的命令为exit时,程序结束

    输出

    当输入的命令为getelem时,请输出获取的元素值,

    当输入的命令是delete时,请输出被删除的那个元素值

    注意,所有的元素均占一行

    样例输入

     insert
    2
    1 1
    2 2
    delete
    1
    clear
    insert
    2
    1 3
    2 4
    getelem
    2
    exit

    样例输出

     1
    4

    提示

    你也可以使用链表实现作,有空练练吧
    包含了线性表的所有基本操作,可以好好练习一下,路过的哪位大佬可以用链表实现一下呢?可私戳QQ:2201128470
    #include <iostream>
    #include <string>
    using namespace std;
    typedef struct node{
        int data[100001];
        int length;
    }node;
    void insert(node &a,int pos,int &e)
    {
        for(int i=a.length;i>=pos;i--)
        {
            a.data[i+1]=a.data[i];//插入元素位置之后向右移动
        }
        a.data[pos]=e;
        a.length++;//表长加1
    }
    void clear(node &a)
    {
        a.length=0;//清除线性表
    }
    void getelem(node &a,int pos,int &e)
    {
        e=a.data[pos];
     } 
    bool Delete(node &a,int pos,int &e)
     {
         if(pos<1||pos>a.length)//删除位置不合适
             return false;
         else{
             e=a.data[pos];
             for(int i=pos+1;i<=a.length;i++)
             {
                 a.data[i-1]=a.data[i];//删除元素位置之后向左移
             }
             a.length--;//表长减1
             return true;
         }
     }
    int main()
    {
        int n;
        node a;
        string s;
        clear(a);
        while(cin>>s&&s!="exit")
        {
            if(s=="insert")
            {
                cin>>n;
                for(int i=0;i<n;i++)
                {
                    int m,k;
                    cin>>m>>k;
                    insert(a,m,k);
                }
            }
            else if(s=="delete")
            {
                int j,e;
                cin>>j;
                if(Delete(a,j,e)==true)
                    cout<<e<<endl;
            }
            else if(s=="clear")
            {
                clear(a);
             } 
             else{
                 int b,e;
                 cin>>b;
                 getelem(a,b,e);
                 cout<<e<<endl;
             }
        }
    }
  • 相关阅读:
    url处理函数
    各种排序方法(冒泡,快速,插入,选择),二分查找
    js二叉树,前序/中序/后序(最大最小值,排序)
    vs中nuget命令的用法
    父子页面间调用
    Ubuntu16.04.2 LTS下使用编译安装程序(使用configure、make、 make install)
    windows与虚拟机的linux共享一个文件夹
    Linux下安装nginx
    Linux下安装VSCode
    Ubuntu下安装jdk
  • 原文地址:https://www.cnblogs.com/andrew3/p/8687998.html
Copyright © 2011-2022 走看看