#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 10010
#define ElemType int
typedef struct LNode{
ElemType data;
LNode *next;
}LNode,*LinkList;
LinkList initLinkList(int num){
LNode* head=(LNode *)malloc(sizeof(LNode));
LinkList p=head;
p->next=NULL;
int elem;
while(num--){
printf("输入:");
scanf("%d",&elem);
LNode* L=(LNode *)malloc(sizeof(LNode));
L->data=elem;
L->next=NULL;
p->next=L;
p=p->next;
}
return head;
}
LinkList FindRevElem(LinkList l,int length,int loc){
LinkList p= l->next;
int count1=0;
while(p&&(count1++ < (length-loc))){
p=p->next;
}
return p;
}
int getListLength(LinkList l){
int length=0;
LinkList p=l->next;
while(p){
length++;
p=p->next;
}
return length;
}
void display(LinkList p){
LinkList pp=p->next;
while(pp){
int data=pp->data;
printf("%d ",data);
pp=pp->next;
}
}
int main(){
printf("输入元素个数:");
int num;
scanf("%d",&num);
printf("初始化链表\n");
LinkList LL1;
LL1=initLinkList(num);
printf("\n打印链表\n");
display(LL1);
printf("表长\n");
int length;
length=getListLength(LL1);
printf("%d\n",length);
printf("查找倒数第K个元素的结点\n");
int loc;
printf("输入K:");
scanf("%d",&loc);
LinkList findP;
findP=FindRevElem(LL1,length,loc);
printf("find=%d\n",findP->data);
return 0;
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ca8b32178f9e58f46d5e8ec1059078e4.png)