刚开始,我想到的是一种笨方法,先遍历单链表,计算出单链表的长度len,然后再从头遍历单链表到第len-k个节点,那么<br>这个节点既是单链表的倒数第k个节点。<br>不过这种算法时间复杂度挺高的,还有一种更简单的方法,就是设置两个指针,分别指向单链表的头节点,然后让其中一个指针,先走k步,<br>之后,再让两个指针同时走,直到第一个指针走到单链表尾节点结束。<br>那么,第二个指针所指向的节点,就是倒数第k个节点。<br>代码如下:<br>#include#includeusing namespace std; typedef struct list{&#9; int data;&#9; struct list *next; }list_node,*listNode; void createList(listNode &list,int arr[],int n) {&#9; int i;&#9; listNode temp;&#9; for(i=0;i