13. 求链表倒数第k个节点
题目:输入1个链表,输出该链表倒数第k个节点,有头指针和尾指针。链表倒数第0个节点是链表的尾指针节点。
代码:
/* 尾指针是倒数第0个,则倒数第k个是正数第len-k个,计算len */ #include<iostream> using namespace std; typedef struct node { int key; struct node* next; }List; List* head=NULL; List* tail=NULL; void create_list(void) { int data; while(cin>>data,data!=-1) { List *p= new List; p->key=data; p->next=NULL; if(head==NULL) { head=p; tail=p; } else { tail->next=p; tail=p; } } } int returnk(int k) { List* p=head; int len=0; while(p!=tail) { len++; p=p->next; } len++; int i=1; p=head; while(i<len-k) { p=p->next; i++; } return p->key; } int main(void) { int k; cin>>k; create_list(); cout<<returnk(k)<<endl; return 0; }