沉眠钟声 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日

悬赏问题

  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上
  • ¥15 提问一个关于vscode相关的环境配置问题,就是输入中文但是显示不出来,代码在idea可以显示中文,但在vscode不行,不知道怎么配置环境
  • ¥15 netcore使用PuppeteerSharp截图
  • ¥20 这张图页头,页脚具体代码该怎么写?
  • ¥15 关于#sql#的问题,请各位专家解答!
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂