数据结构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.heiqu.com/wpwpyz.html