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;
             }
        }
    }
  • 相关阅读:
    gzip:stdin:not in gzip format的解决办法
    Oracle内存结构:SGA PGA UGA
    Oracle存储结构
    数据库的启动和关闭过程
    Linux上实现Windows的SQLPlus保存SQL历史记录功能
    oracle数据库,怎么给已有数据的表添加自增字段
    Centos 6下安装Oracle 11gR2
    CentOS 6下 Oracle11gR2 设置开机自启动
    从join on和where执行顺序认识T-SQL查询处理执行顺序
    虚拟机安装VBoxAdditions增强功能
  • 原文地址:https://www.cnblogs.com/andrew3/p/8687998.html
Copyright © 2011-2022 走看看