关于单链表的一个简单的题目
以下程序输入一个整数n,再输入n个整数,以此按数据大小建立一个链表,再输出该链表所有节点的数据,然后删除整个链表。如输入5 33 88 55 77 11,则输出11 33 55 77 88。
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LinkList;
LinkList * CreateList(LinkList *L, int n);
void DispList(LinkList *L);
void DestoryList(LinkList *L);
int main()
{
int n;
LinkList *head;
scanf("%d",&n);
head = CreateList(head,n);
DispList(head);
DestoryList(head);//在CreatList函数中申请的内存,就可以通过DestoryList函数释放
//可以通过DispList及DestoryList这两个函数验证
return 0;
}
LinkList * CreateList(LinkList *L, int n)
{
LinkList *s;
int i;
L = (LinkList *)malloc(sizeof(LinkList));
L->next = NULL;
for (i = 0; i < n; i++)
{
s = (LinkList *)malloc(sizeof(LinkList));
scanf("%d",&s->data);
s->next = L->next;
L->next = s;
}
return L;
}
void DispList(LinkList *L)
{
LinkList *p = L->next;
while(p != NULL)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
void DestoryList(LinkList *L)
{
LinkList *pre = L,*p = L->next;
while(p != NULL)
{
free(pre);
pre = p;
p = p->next;
}
free(pre);
}