rain487 2022-01-24 16:49 采纳率: 40%
浏览 54

求链表倒数第k项,运行超时该怎么解决??


#include<stdio.h>
#include<malloc.h>
typedef struct lianbiao{//定义新变量 
    int data;
    struct lianbiao *next;
}*List;//定义 
List creatnode(List L);
void search(List L,int k);
int main(){
    int k;
    scanf("%d",&k);
    List head;//不带头结点 
    head=creatnode(head);
    search(head,k);
    
    return 0;
}
List creatnode(List L){
    L=NULL;
    List p,tail=NULL;
    while(1){
    p=(List)malloc(sizeof(struct lianbiao));
    scanf("%d",&p->data );
    if(p->data ==-1)break;
    p->next =NULL;
    if(L==NULL)L=p;
    else tail->next =p;
    tail=p;
    }
    return L;
}
void search(List L,int k){
    List p=L;
    int cnt=0;
    while(p){
        cnt++;
        p=p->next ;
    }
    if(k>cnt||k<1){
        printf("NULL");
        return ;
    }
    else{
        cnt=cnt-k+1;
    }
    int flag=0;
    p=L;////重置 
    while(p){
        flag++;
        if(flag==cnt){
            printf("%d",p->data );
            return ;
        }
        p=p->next ;
    }
    
}

img

输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL。。

  • 写回答

4条回答 默认 最新

  • 魏小言 云原生领域优质创作者 2022-01-24 16:59
    关注
    func FindKthToTail( pHead *ListNode ,  k int ) *ListNode {
        // write code here
        if pHead == nil || k<=0{
            return nil
        }
        var index int
        var arm *ListNode 
        other := &ListNode{}
        other.Next= pHead
        for pHead != nil{
            index++
            pHead = pHead.Next
            if index >= k {                
                arm = other.Next
                other = other.Next
            }
        }
        return arm
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 1月24日

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!