关于#c语言#单链表的问题,请各位专家解答!

```#include
#include

typedef int ElemType;
typedef struct LNode
{
ElemType data;
void *next;
}LinkNode;
void InitList(LinkNode **L){
(L)=(LinkNode) malloc(sizeof(LinkNode));
(*L)->next=NULL;
}
void CreateListF(LinkNode **L, ElemType a[], int n)
{ LinkNode *s;//printf("%d\n",L);printf("%d\t%d\n",L->data,L->next);
//(L)=(LinkNode)malloc(sizeof(LinkNode));
//(*L)->next=NULL;
for(int i=0;i<=n;i++){
s=(LinkNode*)malloc(sizeof(LinkNode));
s->data=a[i];
s->next=(*L)->next;
(*L)->next=s;
}
}
void CreateListT(LinkNode **L, ElemType a[], int n){
LinkNode *s, *r;

}
void DispList(LinkNode **L){
LinkNode *p=(*L)->next;
//printf("%p %p %p %d ",p->next,(*L)->next,p,p->data);
while(p!=NULL){
//p=p->next;
printf("%d\t",p->data);
p=p->next;
}
printf("\n");
}
int main(){
LinkNode *L=NULL;
//printf("l1=%d\n",L->next);
//printf("l8=%d\n",&L);
ElemType a[4]={4,3,2,1};
InitList(&L);
CreateListF(&L,a,4);
DispList(&L);
}```

img

为什么会多输出一个地址

改动处见注释,供参考:

#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode* next;        //void* next; 修改
}LinkNode;
void InitList(LinkNode** L) {
    (*L) = (LinkNode*)malloc(sizeof(LinkNode));
    (*L)->next = NULL;
}
void CreateListF(LinkNode** L, ElemType a[], int n)
{
    LinkNode* s;//printf("%d\n",L);printf("%d\t%d\n",L->data,L->next);
 //(L)=(LinkNode)malloc(sizeof(LinkNode));
 //(*L)->next=NULL;
    for (int i = 0; i < n; i++) { //for (int i = 0; i <= n; i++) 修改
        s = (LinkNode*)malloc(sizeof(LinkNode));
        s->data = a[i];
        s->next = (*L)->next;
        (*L)->next = s;
    }
}
void CreateListT(LinkNode** L, ElemType a[], int n) {
    LinkNode* s, * r;
}
void DispList(LinkNode* L) {       //void DispList(LinkNode** L) 修改
    LinkNode* p = L->next;
    //printf("%p %p %p %d ",p->next,(*L)->next,p,p->data);
    while (p != NULL) {
        //p=p->next;
        printf("%d\t", p->data);
        p = p->next;
    }
    printf("\n");
}
int main() {
    LinkNode* L = NULL;
    //printf("l1=%d\n",L->next);
    //printf("l8=%d\n",&L);
    ElemType a[4] = { 4,3,2,1 };
    InitList(&L);
    CreateListF(&L, a, 4);
    DispList(L);            //DispList(&L); 修改
}