c语言链表的建立和输出

2025-06-28 23:25:17
推荐回答(2个)
回答1:

/*

96 85 74 15 35

96 85 74 15 35

Press any key to continue

*./

#include 
#include 

typedef struct ele{
    int num;
}Ele;

typedef struct node {
Ele data;
struct node *next;
}ListNode,*LinkList;

LinkList Create(int n) {
    ListNode *head,*p;
    int i;
    head = p = (ListNode *)malloc(sizeof(ListNode));
    for(i = 0;i < n;i++) {
p->next = (ListNode *)malloc(sizeof(ListNode));
scanf("%d",&p->next->data.num);
p = p->next;
    }
p->next = NULL;
    return head;
}

void ShowList(LinkList head) {
ListNode *p = head->next;
while(p) {
printf("%d ",p->data.num);
p = p->next;
}
printf("\n");
}

void FreeList(LinkList head) {
ListNode *q,*p = head;
while(p) {
q = p->next;
free(p);
p = q;
}
}

int main() {
int n = 5;
LinkList head = Create(n);
ShowList(head);
FreeList(head);
return 0;
}

回答2:

你只给Pa的next赋值了,没有给pa的data赋值啊。
你读取的数据放在了e.num中,可是e.num和Pa毛关系都没有的。
读取数据后,增加一句Pa->data.num=e.num;就可以了