数据结构C语言实现----创建一个链表

链表的知识点,我就不多说了

写这篇文章也是作为一种学习笔记,为了以后复习好用

所以我就简单说一下,我在这边遇到的一些问题和解决方案    

  1.创建一个链表就是:头指针-->结点1-->结点2-->结点3-->............

  2.新创建一个结点,比如叫它New_node,其实就是在一个地方申请了一块空间,在这块空间放进去一个数据和指针,我们再创建一个节点时还叫          

          New_node,虽然名字一样,但它不会去覆盖第一个结点,因为它又会去申请一块空间,往里面放入指针和数据,也就是说,当第二个结点申请成功时

          第一个结点就不再叫New_node了,他只是一块空间

  3.头指针和第一个结点是相等的,比如说头指针是L,那么L->date == 第一个结点里面的数据

代码如下:

#include<stdio.h>
#include<stdlib.h>

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;
}

  

运行结果:

原文地址:https://www.cnblogs.com/jerryleesir/p/13293340.html