```#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);
}```
为什么会多输出一个地址
改动处见注释,供参考:
#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); 修改
}