一组链表讨论

一、PTA题目集

1、链表逆置

1)因为不是新建链表,所以无法使用头插法来逆置。

解决方法:通过遍历结点,在遍历结点过程中,设置一个指针,用于记录先前遍历的结点然后在依次编译的过程中修改其后继结点的next

2、求链表的倒数第m个元素

1)因为不能改变链表,所以不能用逆置的方法。

解决方法:设置两个指针,先让一个指针开始遍历结点,遍历到m个元素之后第二个指针也开始遍历,当第一个指针遍历结束是第二个指针就是倒数第m个元素的位置。

二、链表学习总结:

1、小组成员1C语言基础较差,对链表不熟悉。

2、小组成员2:课上能听懂但是没办法熟练的在课后作业里应用,希望老师上课多讲解些题目

3、小组成员3:有时会发生作业在pta上编译不通过,在vs上成功运行,有时vs编译不通过pta上显示答案正确,这是什么bug

三、未解决的问题:

1、大部分同学pta未完成。

2、求链表的倒数第m个元素

ElementType Find( List L, int m )

{

     int i=0;

     List p,q;

     p=L;

     q=L;

     if(m<1)

          return ERROR;

     while(p->Next!=NULL){

          if(i==m){

               p=p->Next;

               q=q->Next;

          }

          else{

               i++;

               p=p->Next;

          }

     }

     if(q->Data==NULL)

          return ERROR;

     else

          return q->Data;

}

想利用两个指针,第一个指针移动到m位置的时候第二个指针开始移动,等第一个指针结束后第二个指针的位置就是倒数第m个元素,但是pta不通过。

posted on 2017-03-13 20:21  Eshy  阅读(132)  评论(2编辑  收藏  举报

导航