帮忙看看哩!
#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;
}
修改处见注释,供参考:
#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;
}