C语言实现头插法和尾插法动态单链表(线性表)

学了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\n",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\n",temp->element);
    }
}

int main(){
    Linklist head=initLinklist(10);
    display(head);
    return 0;
}

这是数据结构中最简单最基本的结构,动态的单链表,我自己通过找工作发现编码习惯和能力真的很重要,养成好的编码习惯包括命名习惯和注释习惯以及缩进习惯,不仅能让你的代码可读性更好,而且可以让你的代码看起来赏心悦目,努力实现自己的梦想从一点一滴开始吧。上次宽度乘法器的实验已经做出来了,最近太忙,代码没时间整理,等有时间我会放到我的GitHub上面,嘻嘻

posted @ 2020-10-15 10:27  daremosiranaihana  阅读(1174)  评论(0编辑  收藏  举报