查错#include<stdio.h> #include<stdlib.h> typedef int Elemtype ; typedef struct LNode{ Elemtype data ; struct LNode *next ;}LNode,LinkList ; void CreatList_H(LinkList &L, int n){ L=(LinkList)malloc(sizeof(struct LNode)) ; LinkList P ; L->next=NULL ; int i ; for(i=1;i<=n;i++){ P=(LinkList)malloc(sizeof(struct LNode)) ; scanf("%d",&P->data) ; P->next=L->next ; L->next=P ; } } void ReverseList(LinkList &L,int n){ LinkList P,R ; P=L->next->next ; R=L->next ; int i ; for(i=1;i<n;i++){ R->next=P->next ; P->next=L->next ; L->next=P->next ; P=R->next ; } } void PrintList(LinkList L, int n) { int i ; for(i=1;i<=n;i++){ L=L->next ; printf("%d\n",L->data) ; } } int main(){ LinkList L; int n ; scanf("%d",&n); if(n==0) { printf("list is empty") ; return 0 ; } CreatList_H( L, n) ; ReverseList( L, n); PrintList( L, n) ; return 0 ; }
时间: 2024-01-22 08:03:15 浏览: 65
顺序表逆置
该代码没有明显的语法错误,但是在输入数据时没有处理输入数据个数为0的情况,需要添加判断。另外,在链表倒置时需要注意链表为空的情况。以下是修改后的代码:
```
#include<stdio.h>
#include<stdlib.h>
typedef int Elemtype ;
typedef struct LNode{
Elemtype data ;
struct LNode *next ;
}LNode,LinkList ;
void CreatList_H(LinkList& L, int n){
L=(LinkList)malloc(sizeof(struct LNode)) ;
LinkList P ;
L->next=NULL ;
int i ;
for(i=1;i<=n;i++){
P=(LinkList)malloc(sizeof(struct LNode)) ;
scanf("%d",&P->data) ;
P->next=L->next ;
L->next=P ;
}
}
void ReverseList(LinkList& L,int n){
if(L==NULL || L->next==NULL || n==1){
return ;
}
LinkList P,R ;
P=L->next->next ;
R=L->next ;
int i ;
for(i=1;i<n;i++){
R->next=P->next ;
P->next=L->next ;
L->next=P ;
P=R->next ;
}
}
void PrintList(LinkList L, int n) {
if(n==0) {
printf("list is empty") ;
return ;
}
int i ;
for(i=1;i<=n;i++){
L=L->next ;
printf("%d\n",L->data) ;
}
}
int main(){
LinkList L=NULL;
int n ;
scanf("%d",&n);
CreatList_H( L, n) ;
ReverseList( L, n);
PrintList( L, n) ;
return 0 ;
}
```
阅读全文