#include<stdio.h>
#include<stdlib.h>
typedef struct LinkNode{
int val;
LinkNode* next;
}*LinkList;
//不带头结点
LinkNode* CreateLink(int n){
LinkList l=NULL;;
if(n<=0){
printf("链表为空\n");
return NULL;
}
l=(LinkNode*)malloc(sizeof(LinkNode));
if(!l){
printf("overflow!");
exit(1);
}
printf("请输入结点的值\n");
scanf("%d",&l->val);
l->next=NULL;
LinkNode *p,*q;
q=l;
for(int i=1;i<n;i++){
p=(LinkNode*)malloc(sizeof(LinkNode));
if(!l){
printf("overflow!");
exit(1);
}
printf("请输入结点的值\n");
scanf("%d",&p->val);
p->next=q->next;
q->next=p;
q=p;
}
return l;
}
//k 为位序
LinkNode* FindKthtoTail(LinkList l,unsigned int k){
if(l==NULL || k==0){
return NULL;
}
int i,j;
LinkNode *p,*q;
p=l;
//走到第k个
for(i=1;i<k;i++){
p=p->next;
if(p==NULL){
printf("链表不足k个\n");
exit(1);
}
}
q=l;
while(p->next){
p=p->next;
q=q->next;
}
return q;
}
void main(){
int n;
printf("请输入结点的个数\n");
scanf("%d",&n);
LinkList l;
l=CreateLink(n);
LinkNode* p=FindKthtoTail(l,10);
if(p)
printf("%3d\n",p->val);
else printf("节点为空\n");
}