学了n年的C语言,你知道怎么用C实现一个动态的单链表吗,一起mark一下吧,自我激励ing。
首先是头插法:
// // Created by yuyu on 2020/10/15. // #include "stdio.h" #include "stdlib.h" //头插法实现动态单链表 typedef struct node{ int element; struct node *next; }node,*linklist; linklist insertFromHead(int num){ linklist head=(linklist)malloc(sizeof(node)); linklist temp=head; head->next=NULL; for(int i=0;i<num;i++){ linklist n=(linklist)malloc(sizeof(node)); printf("please input the %dth number",i); scanf("%d",&(n->element)); temp->next=n; temp=temp->next; } return head; } void display(linklist head){ linklist temp=head; while(temp->next){ temp=temp->next; printf("%d ",temp->element); } } int main(){ linklist head=insertFromHead(10); display(head); return 0; }
接下来是尾插法:
// // Created by yuyu on 2020/10/15. //使用尾插法实现单链表 #include "stdio.h" #include "stdlib.h" typedef struct Point{ int element; struct Point *next; }node,*Linklist; Linklist initLinklist(int num){ Linklist head=(Linklist)malloc(sizeof(node)); head->next=NULL; for(int i=num;i>0;--i){ Linklist n=(Linklist)malloc(sizeof(node)); printf("please input the %d number",i); scanf("%d",&(n->element)); n->next=head->next; head->next=n; } return head; } void display(Linklist head){ Linklist temp=head; while(temp->next){ temp=temp->next; printf("%d ",temp->element); } } int main(){ Linklist head=initLinklist(10); display(head); return 0; }
这是数据结构中最简单最基本的结构,动态的单链表,我自己通过找工作发现编码习惯和能力真的很重要,养成好的编码习惯包括命名习惯和注释习惯以及缩进习惯,不仅能让你的代码可读性更好,而且可以让你的代码看起来赏心悦目,努力实现自己的梦想从一点一滴开始吧。上次宽度乘法器的实验已经做出来了,最近太忙,代码没时间整理,等有时间我会放到我的GitHub上面,嘻嘻