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上面,嘻嘻


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM