纯C语言求纠正,由于受编译环境限制,不能用c++的引用“&”符号
纯C语言求改正,由于受编译环境限制,不能用c++的引用“&”符号
#define OK 1
typedef struct LNode{
int data;
struct LNode *next;
}LNode,LinkList;////////////////////here
#include <stdlib.h>
#include <stdio.h>
int CreateListR_Link(LinkList *L,int elem[],int n);
int LengthList_Link(LinkList *L);
int CreateListR_Link(LinkList *L,int elem[],int n){
LNode *p,*q;
int i;
L=(LinkList *)malloc(sizeof(LinkList));
for(i=0;i<n;i++){
p=L;
q=(LNode *)malloc(sizeof(LNode));
q->data=elem[i];
printf("%d\t",q->data);
p->next=q;
p=q;
}
p->next=NULL;
return OK;
}
int LengthList_Link(LinkList *L){//会出错,为什么啊?
char cc=getchar();
LNode *p=L;
cc=getchar();
p=p->next;
int n=0;
cc=getchar();
while(p!=NULL){
n++;
p=p->next;
}
return n;
}
int main(){
LinkList LL;
int i;
int e,a[5];
for(i=0;i<5;i++) a[i]=11+i;
CreateListR_Link(&LL,a,5);
printf("%d\n",LengthList_Link(&LL));
return 0;
};
------解决方案--------------------
这样?
#define OK 1
typedef struct LNode{
int data;
struct LNode *next;
}LNode,LinkList;////////////////////here
#include <stdlib.h>
#include <stdio.h>
int CreateListR_Link(LinkList *L,int elem[],int n);
int LengthList_Link(LinkList *L);
int CreateListR_Link(LinkList *L,int elem[],int n){
LNode *p,*q;
int i;
L=(LinkList *)malloc(sizeof(LinkList));
for(i=0;i<n;i++){
p=L;
q=(LNode *)malloc(sizeof(LNode));
q->data=elem[i];
printf("%d\t",q->data);
p->next=q;
p=q;
}
p->next=NULL;
return OK;
}
int LengthList_Link(LinkList *L){//会出错,为什么啊?
char cc=getchar();
LNode *p=L;
cc=getchar();
p=p->next;
int n=0;
cc=getchar();
while(p!=NULL){
n++;
p=p->next;
}
return n;
}
int main(){
LinkList LL;
int i;
int e,a[5];
for(i=0;i<5;i++) a[i]=11+i;
CreateListR_Link(&LL,a,5);
printf("%d\n",LengthList_Link(&LL));
return 0;
};
------解决方案--------------------
这样?
#include <stdlib.h>
#include <stdio.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,LinkList;
LinkList* CreateListR_Link(int elem[],int n);
int LengthList_Link(LinkList *L);
LinkList* CreateListR_Link(int elem[],int n)
{
LNode *head,*p,*q;
int i=0;
head=p=(LinkList *)malloc(sizeof(LinkList));
p->data=elem[i];
printf("%d\t",p->data);
for(i++;i<n;i++)
{
q=(LNode *)malloc(sizeof(LNode));
q->data=elem[i];
printf("%d\t",q->data);
p->next=q;
p=q;
}
p->next=NULL;
return head;
}
int LengthList_Link(LinkList *p)
{
int n=0;
while(p!=NULL)
{
n++;
p=p->next;
}
return n;
}
int main()
{
LinkList* LL;
int i;
int a[5];
for(i=0;i<5;i++)
a[i]=11+i;
LL=CreateListR_Link(a,5);
printf("\nnode num:%3d\n",LengthList_Link(LL));
return 0;
};