沉眠钟声 2022-06-06 17:25 采纳率: 75%
浏览 22

好像是循环的问题但是找不出来

帮忙看看哩!

img

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedef struct Node{
    int data;
    struct Node* next; 
}sqlist;

void Createlistend(sqlist**L,int n){
    sqlist*p,*q;
    int i;
    srand(time(NULL));
    *L=(sqlist*)malloc(sizeof(sqlist));
    q=*L;
    for(i=0;i<n;i++){
        p=(sqlist*)malloc(sizeof(sqlist));
        p->data=rand()%100+1;
        q->next=p;
        q=p;
    }
    q->next=NULL;
}

int Getelem(sqlist* L,int i,int e){
    int j;
    sqlist* p;
    p=L->next;
    j=1;
    while(p&&j<i){
        p=p->next;
        ++j;
    }
    if(!p||j>i) exit(0);
    e=p->data;
    return e;
}
int main(){
    sqlist* L,*p;
    int n,i,k,e;
    scanf("%d",&n);
    Createlistend(&L,n);
    p=L->next;
    i=0;
    while(p&&i<n){
        printf("%d ",p->data);
        p=p->next;
}
printf("\n");
scanf("%d",k);
e=Getelem(L,k,e); 
printf("%d",e);
return 0;
}

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-06-06 20:01
    关注

    修改处见注释,供参考:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    typedef struct Node{
        int data;
        struct Node* next;
    }sqlist;
    
    void Createlistend(sqlist**L,int n){
        sqlist*p,*q;
        int i;
        (*L)=(sqlist*)malloc(sizeof(sqlist));
        (*L)->next = NULL;//修改
        q=(*L);
        for(i=0;i<n;i++){
            p=(sqlist*)malloc(sizeof(sqlist));
            p->next=NULL; //修改
            p->data=rand()%100+1;
            q->next=p;
            q=p;
        }
    }
    
    int Getelem(sqlist* L,int i,int e){
        int j;
        sqlist* p;
        p=L->next;
        j=1;
        while(p&&j<i){
            p=p->next;
            ++j;
        }
        if(!p||j>i) return -1; //exit(0);
        e=p->data;
        return e;
    }
    int main(){
        sqlist* L,*p;
        int n,i,k,e;
        srand(time(NULL));//修改
        scanf("%d",&n);
        Createlistend(&L,n);
        p=L->next;
        //i=0;
        while(p){ // while(p&&i<n) 修改
            printf("%d ",p->data);
            p=p->next;
        }
        printf("\n");
        scanf("%d",&k); //scanf("%d",k);修改
        e=Getelem(L,k,e);
        printf("%d",e);
       
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 6月6日