眉山建设局网站,做奢侈品的网站,wordpress下载站插件,小黄猫传媒有限公司官方首页题目 Problem Description 一个学校里老师要将班上N个同学排成一列#xff0c;同学被编号为1#xff5e;N#xff0c;他采取如下的方法#xff1a; 1.先将1号同学安排进队列#xff0c;这时队列中只有他一个人#xff1b; 2.2#xff5e;N号同学依次入列#xff0c;编号…题目 Problem Description 一个学校里老师要将班上N个同学排成一列同学被编号为1N他采取如下的方法 1.先将1号同学安排进队列这时队列中只有他一个人 2.2N号同学依次入列编号为i的同学入列方式为老师指定编号为i的同学站在编号为1i -1中某位同学即之前已经入列的同学的左边或右边 3.从队列中去掉MMN个同学其他同学位置顺序不变。 在所有同学按照上述方法队列排列完毕后老师想知道从左到右所有同学的编号。 Input 输入文件arrange.in的第1行为一个正整数N表示了有N个同学。 第2第N行第i行包含两个整数kp其中k为小于i的正整数p为0或者1。若p为0则表示将i号同学插入到k号同学的左边p为1则表示插入到右边。 第N1行为一个正整数M表示去掉的同学数目。 接下来M行每行一个正整数x表示将x号同学从队列中移去如果x号同学已经不在队列中则忽略这一条指令。 Output 输入文件arrange.out仅包括1行包含最多N个空格隔开的正整数表示了队列从左到右所有同学的编号行末换行且无空格。 Sample Input 4
1 0
2 1
1 0
2
3
3 Sample Output 2 4 1 题解 纯粹是为了练一练数据结构中的双向链表的写法而选择的这道题结果用malloc和指针实现的双向链表反而找不出好的方法反而用数组实现的AC了……但是还是把40分的超时代码记下来可能以后数据结构考试会用到吧…… 100分代码非常简单但我可能写的还是不够简单。因为数据是按顺序且不重复给出的所以用数组下标可以很好的知道储存的位置。相反如果只用指针一个一个找起来就会超时…… 代码 100分代码 #include iostream
using namespace std;
int n,m;
int used[100005];
struct DuLinkList{int prior;int next;
}dll[100005];
int main(){int k;bool t;cin n;dll[0].next1;dll[0].prior-1;dll[1].prior0;dll[1].next-1;for(int i2;in;i){cin k t;if(t){dll[dll[k].next].priori;dll[i].nextdll[k].next;dll[k].nexti;dll[i].priork;}else{dll[dll[k].prior].nexti;dll[i].priordll[k].prior;dll[k].priori;dll[i].nextk;}}cin m;for(int i1;im;i){cin k;if(used[k]!1){used[k]1;dll[dll[k].prior].nextdll[k].next;dll[dll[k].next].priordll[k].prior;}}for(int i0;dll[i].next!-1;idll[i].next){cout dll[i].next;if(dll[dll[i].next].next!-1)cout ;elsecout endl;}return 0;
} 40分代码 #include iostream
#include stdlib.h
#include math.husing namespace std;typedef int Status;
typedef int ElemType;class DLL{
public:void InitList(){L(DuLNode*)malloc(sizeof(DuLNode));L-data1;L-priorNULL;L-next(DuLNode*)malloc(sizeof(DuLNode));L-next-data1;L-next-priorL;L-next-nextNULL;}void DestroyList(){DuLNode *p,*q;pL;while(p-next!NULL){qp-next;free(p);pq;}}int LocateElem(ElemType e){int i0;DuLNode *pL;while(p-next!NULL){pp-next;i;if(p-datae)return i;}return 0;}void ListInsert(int i,ElemType e,bool t){DuLNode *p,*s;pGetElemP(i);s(DuLNode*)malloc(sizeof(DuLNode));if(t1){s-datae;s-priorp;s-nextp-next;if(p-next!NULL) //这句话好重要啊……p-next-priors;p-nexts;}else{s-datae;s-nextp;s-priorp-prior;p-prior-nexts;p-priors;}L-data;}void ListDelete(int i){DuLNode *p;pGetElemP(i);p-prior-nextp-next;if(p-next!NULL) //这句话好重要啊……p-next-priorp-prior;free(p);L-data--;}void PrintList(){DuLNode *pL;for(int i1;iL-data;i){pp-next;cout p-data ;}pp-next;cout p-data endl;}
private:struct DuLNode{ElemType data;DuLNode *prior;DuLNode *next;};DuLNode *L;int ListLength(){return L-data;}DuLNode* GetElemP(int i){DuLNode *pL;for(int j1;ji;j)pp-next;return p;}
};DLL l;int m,n;int main(){int k;bool p;cin n;l.InitList();for(int i1;in;i){cin k p;l.prioristInsert(l.priorocateElem(k),i1,p);}cin m;for(int i1;im;i){cin k;if(l.priorocateElem(k)!0)l.prioristDelete(l.priorocateElem(k));}l.PrintList();l.DestroyList();return 0;
} 转载于:https://www.cnblogs.com/skl-hray/p/7642485.html