Let life be beautiful like summer flowers and death like autumn leaves。生如夏花之灿烂,死如秋叶之静美。
链表是和数据结构相挂钩的,现在可以先认识一下哦,不一定非要弄懂,但是弄懂也没毛病
。学习链表之前要把结构体弄懂哦,还有指针等。基础是一定要打牢的,不然以后学数据结构会很困难的。
任务描述
建立一个带头结点的单向链表。
什么是链表?链表和二叉树是C语言数据结构的基础和核心。
链表有多种形式,它可以是单链接的或者双链接的,可以是已排序的或未排序的,可以是循环的或非循环的。
单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始,链表是使用指针进行构造的列表,又称为结点列表,因为链表是由一个个结点组装起来的,其中每个结点都有指针成员变量指向列表中的下一个结点。
列表是由结点构成,head指针指向第一个成为表头结点,而终止于最后一个指向nuLL的指针。
简单单向链表的图示:
NULL
)。申请动态分配一个存储空间的表示形式为:
(struct note*)malloc(sizeof(struct note))
在链表建立过程中,首先要建立第一个结点,然后不断地在其尾部增加新结点,直到不需再有新结点,即尾指针指向NULL为止。
设有结构指针变量。
struct note *p,*p1,*head;
head:用来标志链表头;
p:在链表建立过程中,p总是不断先接受系统动态分配的新结点地址。
p1->next:存储新结点的地址。
源代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *next;
}Node;
Node *CreatList(void)
{
int val, i, n;
Node *phead, *p, *q;
phead = (Node *)malloc(sizeof(Node));
q=phead;
q->next=NULL;
scanf("%d", &n);
for(i=0; i<n; ++i)
{
scanf("%d", &val);
p = (Node *)malloc(sizeof(Node));
p->data=val;
q->next=p;
p->next=NULL;
q=p;
}
return phead;
}
//输出链表
void ShowList(Node *phead)
{
Node *p;
p = phead->next;
while(p)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main(void)
{
Node *phead;
phead = CreatList();
ShowList(phead);
return 0;
}
运行结果:
期末快来了哦,各位小伙伴加油!