跳动百科

单向链表查找倒数第n个元素(单向链表)

关璧爽
导读 大家好,我是小跳,我来为大家解答以上问题。单向链表查找倒数第n个元素,单向链表很多人还不知道,现在让我们一起来看看吧!1、算法f 30

大家好,我是小跳,我来为大家解答以上问题。单向链表查找倒数第n个元素,单向链表很多人还不知道,现在让我们一起来看看吧!

1、算法f 30的功能是,删除并返回链表中指针s所指结点的前驱 你的程序并不是实现上面的功能, 而是实现删除并返回链表中指针s所指结点 typedef struct node //链表结点结构体 { DataType data; //链表结点成员:数值 struct node *next; //链表结点成员:后续结点指针 }*LinkList; DataType f 30(LinkList s) //将循环链表的s结点指针作为参数传递进来 { LinkList pre。

2、p; //声明两个结构体变量 DataType e; pre=s; //pre指向s结点 p=s->next; //p指向s结点的下一结点(也就是p指向pre的后继) while( p!=s) //当p不指向s指向的结点,这个是用于判断循环链表从s结点开始遍历,遍历是否完毕的 { pre=p; //pre指向它的后续结点。

3、也就是现在的p p=p->next; //p指向p的后续,这样始终保证,pre指向p的前驱 } //当上述循环执行完毕后。

4、p指向s,pre指向s的前驱 pre ->next=p->next; //此时pre指向s的前驱,p指向s。

5、所以这一句就将s的前驱的next指向了s的next,将s结点从链表中取出 e=p->data; free(p); //删除p指向的结点,也就是s结点 return e; }。

本文到此讲解完毕了,希望对大家有帮助。