#include <stdio.h>
#include <stdlib.h>
typedef struct lnode{
int data;
struct lnode*next;
}lnode,*linklist;
int searchdata(linklist l,int k){
lnode*q=l;
int lenth=0;
while(q!=NULL){
q=q->next;
lenth++;
}
if(lenth<k){ //长度小于k则不存在倒数第k个查找失败
return 0;
}
lnode*p1=l; //双指针法
lnode*p2=l;
for(int i=0;i<k;i++){
p2=p2->next;
}
while(p2!=NULL){
p2=p2->next;
p1=p1->next;
}
printf("%d",p1->data);
return 1;
}
int main(){
linklist list;
list=(linklist)malloc(sizeof(lnode));
list->next=NULL;
lnode *s;
int x;
scanf("%d",&x);
while(x!=9999){ //头插法建立链表
s=(linklist)malloc(sizeof(lnode));
s->data=x;
s->next=list->next;
list->next=s;
scanf("%d",&x);
}
int k;
scanf("%d",&k);
searchdata(list,k);
return 0;
}
2009年408数据结构算法真题c语言实现暴力解(带测试功能)
于 2023-03-28 18:18:51 首次发布