高姓大名


私信TA

用户名:dotcpp0700595

访问量:133

签 名:

等  级
排  名 876
经  验 3447
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校 中国石油大学
专  业

  自我简介:

TA的其他文章

解题思路:都是链表的基本操作 思路就不多赘述了,主要是时间超限问题。输入输出最好都是用scanf、printf,而不是cin,cout;可能还有人会有疑问说我输入数值时没使用cin/cout啊,包括我!但是我当时输入字符串时由于迷恋C++ string 的字符串比较,使用了cin输入字符串,更改其输入方式及字符串比较判断即可

注意事项:

参考代码:#include <iostream>
#include <list>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;

int main()
{

   int n;
   scanf("%d",&n);
   list<int> l;
   vector<int> v(n+1);
   for(int i = 0;i<n;i++)
   {
       scanf("%d",&v[i]);
       l.push_front(v[i]); //前插法与实际顺序相反
   }
   int m;
   scanf("%d",&m);
   getchar();
   char s[80];
   string s1 = "insert";
   string s2 = "delete";
   string s3 = "get";
   string s4 = "show";
   while(m--)
   {
       scanf("%s",s);
       if(strcmp(s,s2.c_str()) == 0)
       {
           int num;
           scanf("%d",&num);
           auto it = l.begin();
           advance(it,num-1);
           if(it != l.end())
           {
               l.erase(it);
               printf("delete OK\n");
               continue;
           }
           else{
               printf("delete fail\n");
               continue;
           }
       }
       else if(strcmp(s,s3.c_str()) == 0)
       {
           int num;
           scanf("%d",&num);
           auto it = l.begin();
           advance(it,num-1);
           if(it != l.end())
           {
               printf("%d\n",*it);
           }
           else{
               printf("get fail\n");
           }
           continue;
       }
       else if(strcmp(s,s1.c_str()) == 0)
       {
           int num,place;
           scanf("%d%d",&place,&num);
           auto it = l.begin();
           advance(it,place-1);
           if((l.empty() && place == 1) || (place > 0 && place <= l.size()) )
           {
               l.insert(it,num);
               printf("insert OK\n");
               continue;
           }
           else
           {
               printf("insert fail\n");
               continue;
           }
       }
       else if(strcmp(s,s4.c_str()) == 0)
       {
           if(!l.empty())
           {
               for(auto it = l.begin();it != l.end();it++)
               {
                  printf("%d ",*it);
               }
               printf("\n");
               continue;
           }
           else{
               printf("Link list is empty\n");
               continue;
           }

       }
   }
   return 0;
}

 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区