专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

数据结构与算法(三)线性表

  线性表定义
  线性表(List):零个或多个数据元素的有限序列。
  首先它是一个序列,其次,线性表强调是有限的。
  前驱元素:若A元素在B元素的前面,则称A为B的前驱元素。
  后继元素:若B元素在A元素的后面,则称B为A的后继元素。线性表的特征
  数据元素之间具有一种一对一的逻辑关系。第一个数据元素没有前驱,这个数据元素被称为头结点;最后一个数据元素没有后继,这个数据元素被称为尾结点;除了第一个和最后一个数据元素外,其他数据元素有且仅有一个前驱和一个后继。
  如果把线性表用数学语言来定义,则可以表示为(a1,。。。ai1,ai,ai1,。。。an),ai1领先于ai,ai领先于ai1,称ai1是ai的前驱元素,ai1是ai的后继元素。
  线性表的分类
  线性表中数据存储的方式可以是顺序存储,也可以是链式存储,按照数据的存储方式不同,可以把线性表分为顺序表和链表。顺序表
  顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元,依次存储线性表中的各个元素、使得线性表中再逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。
  顺序表设计
  类名
  SequenceList
  构造方法
  SequenceList(intcapacity):创建容量为capacity的SequenceList对象
  成员方法publicvoidclear():空置线性表
  publicbooleanisEmpty():判断线性表是否为空,是返回true,否返回false
  publicintlength():获取线性表中元素的个数
  publicTget(inti):读取并返回线性表中的第i个元素的值
  publicvoidinsert(inti,Ee):在线性表的第i个元素之前插入一个值为e的数据元素。
  publicvoidinsert(Ee):向线性表中添加一个元素e
  publicTremove(inti):删除并返回线性表中第i个数据元素。
  publicintindexOf(Ee):返回线性表中首次出现的指定的数据元素的位序号,若不存在,则返回1。
  成员变量privateT〔〕elements:存储元素的数组
  privateintn:当前线性表的长度顺序表代码实现SuppressWarnings(unchecked)publicclassSequenceListTimplementsIterableT{存储元素的数组privateT〔〕elements;记录当前顺序表中的元素个数privateintn;创建容量为capacity的SequenceList对象publicSequenceList(intcapacity){初始化数组this。elements(T〔〕)newObject〔capacity〕;初始化长度n0;}空置线性表publicvoidclear(){n0;}判断线性表是否为空,是返回true,否返回falsepublicbooleanisEmpty(){returnn0;}获取线性表中元素的个数publicintlength(){returnn;}读取并返回线性表中的第i个元素的值publicTget(inti){if(i0in){thrownewRuntimeException(当前元素不存在!);}returnelements〔i〕;}在线性表的第i个元素之前插入一个值为t的数据元素publicvoidinsert(inti,Ee){if(nelements。length){thrownewRuntimeException(当前表已满);}先把i索引处的元素及其后面的元素依次向后移动一位for(intjn;ji;j){elements〔j〕elements〔j1〕;}再把t元素放到i索引处elements〔i〕t;n;}向线性表中添加一个元素tpublicvoidinsert(Ee){if(ielements。length){thrownewRuntimeException(当前表已满);}if(i0in){thrownewRuntimeException(插入的位置不合法);}elements〔n〕t;}删除并返回线性表中第i个数据元素publicTremove(inti){if(i0in1){thrownewRuntimeException(当前要删除的元素不存在);}记录i索引处的值Tcurrentelements〔i〕;索引i后面元素依次向前移动一位for(intji;jn1;j){elements〔j〕elements〔j1〕;}元素个数1n;returncurrent;}返回线性表中首次出现的指定的数据元素的位序号,若不存在,则返回1。publicintindexOf(Ee){if(tnull){thrownewRuntimeException(查找的元素不合法);}for(inti0;in;i){if(Objects。equals(elements〔i〕,t)){returni;}}return1;}}顺序表的遍历
  一般作为容器存储数据,都需要向外部提供遍历的方式,因此我们需要给顺序表提供遍历方式。
  在Java中,遍历集合的方式一般都是用的是forEach循环,如果想让我们的SequenceList也能支持forEach循环,则需要做如下操作:让SequenceList实现Iterable接口,重写iterator方法;在SequenceList内部提供一个内部类SIterator,实现Iterator接口,重写hasNext方法和next方法;publicclassSequenceListTimplementsIterableT{。。。OverridepublicIteratorTiterator(){returnnewSIterator();}privateclassSIteratorimplementsIteratorT{privateintcursor;publicSIterator(){this。cursor0;}OverridepublicbooleanhasNext(){returncursorn;}OverridepublicTnext(){returnelements〔cursor〕;}}}顺序表容量可变
  在之前的实现中,当我们使用SequenceList时,先newSequenceList(5)创建一个对象,创建对象时就需要指定容器的大小,初始化指定大小的数组来存储元素,当我们插入元素时,如果已经插入了5个元素,还要继续插入数据,则会报错,就不能插入了。这种设计不符合容器的设计理念,因此我们在设计顺序表时,应该考虑它的容量的伸缩性。
  考虑容器的容量伸缩性,其实就是改变存储数据元素的数组的大小,那我们需要考虑什么时候需要改变数组的大小?添加元素时扩容
  添加元素时,应该检查当前数组的大小是否能容纳新的元素,如果不能容纳,则需要创建新的容量更大的数组,我们这里创建一个是原数组两倍容量的新数组存储元素。
  移除元素时缩容
  移除元素时,应该检查当前数组的大小是否太大,比如正在用100个容量的数组存储10个元素,这样就会造成内存空间的浪费,应该创建一个容量更小的数组存储元素。如果我们发现数据元素的数量不足数组容量的14,则创建一个是原数组容量的12的新数组存储元素。
  SuppressWarnings(unchecked)publicclassSequenceListT{向线性表中添加一个元素tpublicvoidinsert(Ee){如果当前容量已满,那么扩容2倍if(nelements。length){resize(2elements。length);}。。。}删除并返回线性表中第i个数据元素publicTremove(inti){。。。如果当前元素数量小于容量的14,那么缩容为12if(nelements。length4){resize(elements。length2);}returncurrent;}根据newSize,重置elements的大小publicvoidresize(intnewSize){定义一个临时数组,指向原数组T〔〕tempelements;创建新数组elements(T〔〕)newObject〔newSize〕;System。arraycopy(temp,0,elements,0,temp。length);}}
  扩缩容的原理很简单,是创建一个具有指定新容量的新数组,然后把原来的数据拷贝到新数组。顺序表的时间复杂度get(i):不论数据元素量n有多大,只需要一次elements〔i〕就可以获取到对应的元素,所以时间复杂度为O(1)。我们通常把具有这一特点的存储结构称为随机存取结构。insert(inti,Ee):每一次插入,都需要把i位置后面的元素移动一次,随着元素数量N的增大,移动的元素也越多,时间复杂为O(n);remove(inti):每一次删除,都需要把i位置后面的元素移动一次,随着数据量N的增大,移动的元素也越多,时间复杂度为O(n);
  由于顺序表的底层由数组实现,数组的长度是固定的,所以在操作的过程中涉及到了容器扩容操作。这样会导致顺序表在使用过程中的时间复杂度不是线性的,在某些需要扩容的结点处,耗时会突增,尤其是元素越多,这个问题越明显。顺序表的优缺点优点无需为表示表中元素之间的逻辑关系而增加额外的存储空间;可以快速地存取表中任意位置的元素。缺点插入和删除操作需要移动大量元素;当线性表长度变化较大时,难以确定存储空间的容量;造成存储空间的碎片。链表
  虽然顺序表的查询很快,时间复杂度为O(1),但是增删的效率是比较低的,因为每一次增删操作都伴随着大量的数据元素移动。这个问题有没有解决方案呢?
  有,我们可以使用另外一种存储结构实现线性表,链式存储结构。
  链表是一种物理存储单元上非连续、非顺序的存储结构,其物理结构不能只管的表示数据元素的逻辑顺序,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
  链表由一系列的结点(链表中的每一个元素称为结点)组成,结点可以在运行时动态生成。
  链表节点设计
  类名
  Node
  构造方法
  Node(Ee,Nodenext):创建Node对象
  成员变量Eitem:存储数据
  Nodenext:指向下一个结点NoArgsConstructorAllArgsConstructorDatapublicclassNodeE{存储元素privateEitem;指向下一个节点privateNodeEnext;}单向链表
  单向链表是链表的一种,它由多个结点组成,每个结点都由一个数据域和一个指针域组成,数据域用来存储数据,指针域用来指向其后继结点。链表的头结点的数据域不存储数据,指针域指向第一个真正存储数据的结点。
  单向链表设计
  类名
  LinkList
  构造方法
  LinkList():创建LinkList对象
  成员方法publicvoidclear():空置线性表
  publicbooleanisEmpty():判断线性表是否为空,是返回true,否返回false
  publicintlength():获取线性表中元素的个数
  publicEget(inti):读取并返回线性表中的第i个元素的值
  publicvoidinsert(Ee):往线性表中添加一个元素;
  publicvoidinsert(inti,Ee):在线性表的第i个元素之前插入一个值为t的数据元素。
  publicEremove(inti):删除并返回线性表中第i个数据元素。
  publicintindexOf(Ee):返回线性表中首次出现的指定的数据元素的位序号,若不存在,则返回1。
  成员变量privateNodehead:记录首结点
  privateintn:记录链表的长度单向链表代码实现publicclassLinkListEimplementsIterableE{记录首节点privatefinalNodeEhead;记录链表的长度privateintn;publicLinkList(){初始化头结点headnewNode(null,null);初始化元素个数n0;}空置线性表publicvoidclear(){head。nextnull;n0;}判断线性表是否为空,是返回true,否返回falsepublicbooleanisEmpty(){returnn0;}获取线性表中元素的个数publicintlength(){returnn;}读取并返回线性表中的第i个元素的值publicEget(inti){if(i0in){thrownewRuntimeException(位置不合法!);}通过循环,从头结点开始往后找,依次找i次,就可以找到对应的元素NodeEnhead。next;for(intindex0;indexi;index){nn。next;}returnn。item;}往线性表中添加一个元素publicvoidinsert(Ee){找到当前最后一个节点NodeEnhead;头节点不存储数据,所以不能算作第一个元素while(n。next!null){nn。next;}创建新节点,保存元素t让当前最后一个元素指向新节点n。nextnewNode(e,null);元素个数1this。n;}在线性表的第i个元素之前插入一个值为t的数据元素publicvoidinsert(inti,Ee){if(i0in){thrownewRuntimeException(位置不合法!);}找到i位置前一个节点NodeEprehead;头节点不存储数据,所以不能算作第一个元素for(intindex0;indexi;index){prepre。next;}找到i位置的节点NodeEcurrentpre。next;创建新节点,并且新节点需要指向原来i位置的节点原来i位置的前一个节点指向新节点pre。nextnewNode(e,current);元素个数1n;}删除并返回线性表中第i个数据元素publicEremove(inti){if(i0in){thrownewRuntimeException(位置不合法);}找到i位置前一个节点NodeEprehead;for(intindex0;indexi;index){prepre。next;}找到i位置的节点NodeEcurrentpre。next;找到i位置的下一个节点前一个节点指向下一个节点pre。nextcurrent。next;元素个数1n;returncurrent。item;}返回线性表中首次出现的指定的数据元素的位序号,若不存在,则返回1publicintindexOf(Ee){从头结点开始,依次找到每一个节点,取出item,和t比较,如果相同,就返回NodeEnhead;for(inti0;n。next!null;i){nn。next;if(n。item。equals(e)){returni;}}return1;}OverridepublicIteratorEiterator(){returnnewLIterator();}privatestaticclassNodeT{存储元素Titem;指向下一个节点NodeTnext;Node(Titem,NodeTnext){this。itemitem;this。nextnext;}}}循环链表
  对于单向链表,由于每个结点只存储了向后的指针,到了尾标志就停止了向后链的操作,这样,当中某一结点就无法找到它的前驱结点了。
  比如,你是一业务员,家在上海,需要经常出差,行程就是上海到北京一路上的城市,找客户谈生意或分公司办理业务。你从上海出发,乘火车路经多个城市停留后,再乘飞机返回上海,以后,每隔一段时间,你基本还要按照这样的行程开展业务,如图所示:
  有一次,你先到南京开会,接下来要对以上的城市走一遍,此时有人对你说,不行,你得从上海开始,因为上海是第一站。你会对这人说什么?神经病。哪有这么傻的,直接回上海根本没有必要,你可以从南京开始,下一站蚌埠,直到北京,之后再考虑走完上海及苏南的几个城市。
  显然这表示你是从当中一结点开始遍历整个链表,这都是原来的单链表结构解决不了的问题。事实上,把北京和上海之间连起来,形成一个环就解决了前面所面临的困难。这就是循环链表。
  从刚才的例子,可以总结出,循环链表解决了一个很麻烦的问题。如何从当中一个结点出发,访问到链表的全部结点。
  在单向链表中,最后一个节点的指针为NULL,不指向任何结点,因为没有下一个元素了。要实现循环链表,我们只需要让单向链表的最后一个节点的指针指向头结点即可。
  如果链表中没有元素,那么头结点也需要指向自己,从而形成环。
  循环链表代码实现
  代码实现和单向链表基本一致,只需要在插入尾结点的时候,将尾结点指向头结点即可。publicvoidinsert(Ee){找到当前最后一个节点头节点不存储数据,所以不能算作第一个元素varnhead;while(n。next!null){nn。next;}创建新节点,保存元素t,让当前最后一个元素指向新节点循环链表,最后一个元素指向头结点n。nextnewNode(e,head);元素个数1this。n;}
  同时,在构造和清空链表时,让头结点指向自己publicCycleLinkList(){初始化头结点headnewNode(null,null);head。nexthead;初始化元素个数n0;}清空线性表publicvoidclear(){head。nexthead;n0;}双向链表
  继续刚才的例子,你平时都是从上海一路停留到北京的,可是这一次,你得先到北京开会,谁叫北京是首都呢,会就是多。开完会后,你需要例行公事,走访各个城市,此时你怎么办?
  有人又出主意了,你可以先飞回上海,一路再乘火车走遍这几个城市,到了北京后,你再飞回上海。你会感慨,人生中为什么总会有这样出馊主意的人存在呢?真要气死人才行。哪来这么麻烦,我一路从北京坐火车或汽车回去不就完了吗。
  我们的单链表,总是从头到尾找结点,难道就不可以正反遍历都可以吗?当然可以,只不过需要加点东西而已。
  双向链表:在单链表的每个结点中,再设置一个指向其前驱结点的指针域。所以在双向链表中的结点都有两个指针域,一个指向直接后继,另一个指向直接前驱。双向链表结点设计
  类名
  Node
  构造方法
  Node(Ee,Nodepre,Nodenext):创建Node对象
  成员变量Eitem:存储数据
  Nodenext:指向下一个结点
  Nodepre:指向上一个结点AllArgsConstructorprivatestaticclassNodeE{存储元素Eitem;指向上一个节点NodeEpre;指向下一个节点NodeEnext;}双向链表设计
  类名
  DoubleLinkList
  构造方法
  DoubleLinkList():创建DoubleLinkList对象
  成员方法publicvoidclear():空置线性表
  publicbooleanisEmpty():判断线性表是否为空,是返回true,否返回false
  publicintlength():获取线性表中元素的个数
  publicTget(inti):读取并返回线性表中的第i个元素的值
  publicvoidinsert(Ee):往线性表中添加一个元素;
  publicvoidinsert(inti,Ee):在线性表的第i个元素之前插入一个值为t的数据元素。
  publicTremove(inti):删除并返回线性表中第i个数据元素。
  publicintindexOf(Ee):返回线性表中首次出现的指定的数据元素的位序号,若不存在,则返回1。
  publicTgetFirst():获取第一个元素
  publicTgetLast():获取最后一个元素
  成员变量privateNodefirst:记录首结点
  privateNodelast:记录尾结点
  privateintn:记录链表的长度双向链表代码实现publicclassDoubleLinkListEimplementsIterableE{记录首节点privatefinalNodeEhead;记录尾节点privateNodeElast;记录链表的长度privateintn;publicDoubleLinkList(){初始化头结点headnewNode(null,null,null);初始化尾节点lastnull;初始化元素个数n0;}空置线性表publicvoidclear(){head。nextnull;lastnull;n0;}判断线性表是否为空,是返回true,否返回falsepublicbooleanisEmpty(){returnn0;}获取线性表中元素的个数publicintlength(){returnn;}获取头结点publicEgetFirst(){if(isEmpty()){returnnull;}returnhead。next。item;}获取尾节点publicEgetLast(){if(isEmpty()){returnnull;}returnlast。item;}读取并返回线性表中的第i个元素的值publicEget(inti){if(i0in){thrownewRuntimeException(位置不合法!);}通过循环,从头结点开始往后找,依次找i次,就可以找到对应的元素NodeEnhead。next;for(intindex0;indexi;index){nn。next;}returnn。item;}往线性表中添加一个元素publicvoidinsert(Ee){if(isEmpty()){如果链表为空创建新的节点NodeEnewNodenewNode(e,head,null);让新节点成为尾节点lastnewNode;让头结点指向尾节点head。nextlast;}else{如果链表不为空NodeEtempLastlast;创建新的节点NodeEnewNodenewNode(e,tempLast,null);当前的尾节点指向新节点tempLast。nextnewNode;让新节点成为尾节点lastnewNode;}元素个数1n;}在线性表的第i个元素之前插入一个值为t的数据元素publicvoidinsert(inti,Ee){if(i0in){thrownewRuntimeException(位置不合法!);}找到i位置的前一个节点NodeEprehead;for(intindex0;indexi;index){prepre。next;}找到i位置的节点NodeEcurrentpre。next;创建新节点NodeEnewNodenewNode(e,pre,current);让i位置的前一个节点指向新节点pre。nextnewNode;让i位置的前一个节点变为新节点current。prenewNode;元素个数1n;}删除并返回线性表中第i个数据元素publicEremove(inti){if(i0in){thrownewRuntimeException(位置不合法);}找到i位置前一个节点NodeEprehead;for(intindex0;indexi;index){prepre。next;}找到i位置的节点NodeEcurrentpre。next;找到i位置的下一个节点NodeEnextcurrent。next;i位置的前一个节点的下一个节点指向i位置的下一个节点pre。nextnext;i位置的下一个节点的前一个节点指向i位置的前一个节点next。prepre;元素个数1n;returncurrent。item;}返回线性表中首次出现的指定的数据元素的位序号,若不存在,则返回1publicintindexOf(Ee){从头结点开始,依次找到每一个节点,取出item,和t比较,如果相同,就返回NodeEnhead;for(inti0;n。next!null;i){nn。next;if(n。item。equals(e)){returni;}}return1;}OverridepublicIteratorEiterator(){returnnewLIterator();}AllArgsConstructorprivatestaticclassNodeE{存储元素Eitem;指向上一个节点NodeEpre;指向下一个节点NodeEnext;}privateclassLIteratorimplementsIteratorE{privateNodeEnhead;OverridepublicbooleanhasNext(){returnn。next!null;}OverridepublicEnext(){nn。next;returnn。item;}}}链表的时间复杂度get(inti):每一次查询,都需要从链表的头部开始,依次向后查找,随着数据元素N的增多,比较的元素越多,时间复杂度为O(n);insert(inti,Ee):每一次插入,需要先找到i位置的前一个元素,然后完成插入操作,随着数据元素N的增多,查找的元素越多,时间复杂度为O(n);remove(inti):每一次移除,需要先找到i位置的前一个元素,然后完成插入操作,随着数据元素N的增多,查找的元素越多,时间复杂度为O(n)。
  相比较顺序表,链表插入和删除的时间复杂度虽然一样,但仍然有很大的优势,因为链表的物理地址是不连续的,它不需要预先指定存储空间大小,并且在存储过程中不涉及到扩容等操作,同时它并没有涉及的元素的交换。
  相比较顺序表,链表的查询操作性能会比较低。
  因此,如果我们的程序中查询操作比较多,建议使用顺序表,增删操作比较多,建议使用链表。

衡水18酒坊如果没打开里面没有酒了怎么办?本来没打算回答这个问题,没什么阅读量和价值。不过这样的事情,我亲历过,简单交流交流吧。我遇到的情况不是衡水18酒坊的酒,记不清是什么牌子的酒了。也是进货后,零售时才发现的。那是80史前比霸王龙更厉害的恐龙都有哪些?首先,霸王龙确实是恐龙时代最强大的掠食者之一。但那个时代同样有实力和它接近或者比它更凶猛的恐龙!南方巨兽龙南方巨兽龙的体重为11吨左右,比霸王龙略轻,体长超过14米,它有很可怕的咬孟晚舟上班了网友们为什么沸腾?是华为员工沸腾了,百亿奖励呀,能不欢乎么?孟晚舟上班了,华为胜利了,中国胜利了!这实际上已经成为了一个历史性的时刻,这标志着中国这次真的胜利得很漂亮!真的很扬眉吐气!网友们的爱国主十堰未来五年的经济发展方向和城市规划有哪些?十堰是湖北省的地级市,位于西北部,被定为人口适度集聚区,简称鄂西北,车牌鄂C是国家园林城市,国家历史名城和卫生城市,人口有350万,辖有四县三区一市和一个经济技术开发区,面积为23怎么样才能让底妆更服帖?妆前木有做好保湿工作,或者肌肤不在状态,这个时候需要的就是润肤油!是能让底妆更服帖的秘密武器哦!产品实物goodal润肤油,60ml,价格25000。比较特别的是,这款是水状润肤油广州市内有哪些景点可自驾游?增城白水寨自驾路线增城广场何仙姑旅游景区派潭镇白水寨风景名胜区推荐理由清凉夏日,以最无拘无束的状态去观白水寨风光。神仙沟里蜿蜒曲折绝美啊。流水淙淙,树木葱郁,奇特巨石怪树。仙姑天池除物联卡以外,还有哪些好的流量卡?以我从事物联卡销售四年的经验各位在购买流量卡的时候一定要擦亮眼睛不要被低价流量,套路流量蒙蔽了!我目前在用这款流量卡网速非常快,已经稳定四年了,具体截图如下!这种需求个人觉得在该平千元机哪款比较好用?一千左右的手机,既要打游戏,又要看视频,游戏性能取决于手机的处理器,看视频取决于大屏和刷新率,我推荐RealmeQ2。RealmeQ2采用的是联发科天玑800U,7nm工艺制程,L肾阴虚者要阴阳双补还是只补肾阴?严格意义上说,目前市面上流通的中成药绝大多数都是阴阳双补。任何一种中药都有两面性,单纯补阴或是单纯补阳都是不现实的。在实际治疗过程中,如果单独补阴或单独补阳只会使症状加重,对病情并那些被电信诈骗的人,后来怎么样了?我说说我自己吧,深受其害。被杀猪盘网络投资诈骗后近半个月的生活状态犹如行尸走肉,真的一点不夸张,被骗走的不仅仅是多年的积蓄,还有自己对别人的善良和信任。无法接受现实,回忆分析来龙去多家顶级机构开始抄底教育股,什么信号?元宇宙的概念而已1元宇宙可不仅仅是游戏,或者是购物其实在线上教育方面,也会是很大的一个突破2所以元宇宙的热点,线上教育其实也会有很大的关联不过,主要是线上教育,其他的线下为主的嘛依
要知道,笑贫不笑娼是人间现实,老实人被嫌弃才是悲剧头条创作挑战赛01hr有这么一句话道路难行钱作马,城池不克酒为兵。如果你感觉到世道艰难,那你只需要有钱,就能逢山开路,遇水架桥了。身为将军的你,如果感觉到城池难以攻克,那你只需要用古今多少相思意,都随秋雨上心头头条创作挑战赛晚窗又听萧萧雨,一点昏灯相对愁。秋雨不似春雨那般甜腻,不似夏雨那般热烈秋雨是舒缓的,缠绵中带着寒意,总是让人心底泛起思念的涟漪。一声梧叶一声秋,一点芭蕉一点愁。雨点滴带你走进古城阆中阆(lng)中古城,是国家5A级旅游景区,千年古县,中国春节文化之乡,中国四大古城之一。很多人会说阆中怎么就能成为中国四大古城之一呢?早在商周时期阆中就已然存在,一直至今。阆中具有世界杯战力榜更新!南美双雄位居前2,法国第7葡萄牙第14英国媒体卫报更新了卡塔尔世界杯的战力榜,来自南美的巴西与阿根廷位居前二。其他豪门球队中,众星云集的法国队只排在第七,C罗领衔的葡萄牙队已经跌到第14位。本次国家队比赛日,是卡塔尔世曼城天要塌了?瓜帅合同明夏到期,皇马又要撬走2主力,或解体?过去5个赛季,曼城拿到4座英超冠军,如果不是20192020赛季克洛普率领利物浦崛起,曼城将史无前例实现英超5连冠。虽然欧冠战绩一般,但是在联赛,曼城完全独一档,基本找不到对手。本曼城的墙角是这么好挖的?除非有一颗儿皇梦近来西班牙媒体阿斯报称,皇马未来可能会引进曼城的哈兰德与坎塞洛。曼城两大主力阿斯报称,皇马将在2023年夏天尝试签约坎塞洛,2024年尝试签哈兰德。哈兰德在2024年的违约金为1。宇宙的一切是谁安排的?科学家造物者存在,宇宙并不是偶然在古人的世界里,地球充满着奇妙,是一个神秘浩瀚的世界,古人的认知有限,并不知道地球是一个球体,是一个有限的星球,也不知道天上的星星为何物,头顶的星空是一个什么样的世界?直到人类走进楞伽烟雨苏州上方山森林公园(三)2004年的夏天,有十几只猴子从苏州上方山国家森林公园笼舍里逃往山林,经多方追捕无果,后来管理方采纳专家建议,索性放猴归山。上方山野果丰盛,生态环境好,猴子们在花果山中过得逍遥自在探访云南普洱太阳河森林公园人与动物亲密接触,让游客难以拒绝感谢追更福大人云南自驾游作品。如今无论成年人的体验式旅游还是家庭亲子旅游,更加聚焦于互动,孩子和父母的互动,人与大自然的互动,甚至家长孩子和野生动物的触摸式互动!通过探索的过程,接10月新规来了!事关身份证车子电子烟来源中新经纬中新经纬9月29日电(吴晓薇)10月将至,伴随假期来临,一批新规也将落地。水果味电子烟将全面下架,验车也将发生重大变化,一起看看吧。1。全国新规海关总署调整必须实施检验新型逃课正在盛行,父母却以为孩子很优秀我在头条搞创作第二期人生其实很简单,无非就是两种模样先苦后甜,先甜后苦。你所荒废和讨厌的现在,是未来的你想回都回不去的曾经。作者淼淼妈前几天,儿子正在上网课,电脑中却突然传出一段响
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网