链表的知识点,我就不多说了
写这篇文章也是作为一种学习笔记,为了以后复习好用
所以我就简单说一下,我在这边遇到的一些问题和解决方案
1.创建一个链表就是:头指针-->结点1-->结点2-->结点3-->............
2.新创建一个结点,比如叫它New_node,其实就是在一个地方申请了一块空间,在这块空间放进去一个数据和指针,我们再创建一个节点时还叫
New_node,虽然名字一样,但它不会去覆盖第一个结点,因为它又会去申请一块空间,往里面放入指针和数据,也就是说,当第二个结点申请成功时
第一个结点就不再叫New_node了,他只是一块空间
3.头指针和第一个结点是相等的,比如说头指针是L,那么L->date == 第一个结点里面的数据
代码如下:
#include
#include
typedef struct Node
{
char date;
struct Node *next;
} Node , *LinkList;
LinkList creat_linklist(int n)//创建一个长度为n的单链表
{
LinkList New_node;//新节点名称
LinkList Tail_node;//最后一个节点名称
LinkList Head_node = NULL;//头节点
char c;
for (size_t i = 0; i < n; i++)
{
printf("请输入第%d个节点的数据:",i+1);
scanf("%c", &c);//读取要插入的字符
fflush(stdin);//清空缓存
New_node = (LinkList)malloc( sizeof(Node) );//为新节点申请一块空间
New_node->date = c;
New_node->next = NULL;//顺序插入的每个节点后面都没有元素
if ( Head_node==NULL )
{
Head_node = New_node;//如果插入的节点是第一个节点,就挂在头节点后面
}else
{
Tail_node->next = New_node;//若插入的节点不是第一个节点,就挂在最后一个节点的后面
}
Tail_node = New_node;//插入新节点后,这个已经插入的最新节点就成为了最后一个节点
}
return Head_node;
}
int main()
{
LinkList L;
int n;
printf("请输入链表节点个数:");
scanf("%d",&n);
fflush(stdin);//清空缓存
L = creat_linklist(n);
//打印单链表
while ( L != NULL )
{
printf("%c" , L->date);
L = L->next;
}
return 0;
}
运行结果: