链表的创建和遍历

一:链表是什么

链表是多个不连续的内存空间去存储数据的

二:链表是如何进行创建,遍历,插入的

1、我们在写代码的时候都会用到头文件,也就是我们的库函数(以下是我所写的库函数,仅供参考)

#include<stdio.h>  
#include<math.h>      
#include<string.h>  
#include<stdlib.h> 
#include<ctype.h>     
#include<Windows.h> 

2、链表是由结点组成的,结点又分成了数据域和指针域,显而易见,数据域是存储数据的,指针域是存放指针的,所以在这里我们就需要用到结构体,结构体的定义如下所示:

typedef struct Node{
    int data;
    struct Node *next;
}Node , *LinkList ;

3、首先我们需要创建一个头结点,并为头结点动态申请空间,头结点的数据域是没有数据的,指针域为NULL

int main(){
    LinkList head=(Node *)malloc(sizeof(Node));
    head->next=NULL;

4、接下来我们创建链表,在这里我调用了子函数创建函数(create),需要用到头结点,所以在这里我把头结点当成参数传递给了create,首先需要判断头结点是否为空,不为空则往下面走,我用到了键盘录入(5个数据),我们学到的插入数据有头插法还有尾插法,我这里运用到了链表的头插法

//创建链表 
int create(LinkList head){
    //判断头结点是否为空 
    if(head==NULL){
        printf("空间申请失败!");
        return 0;
    }
    
    int i;
    for(i=0;i<5;i++){
        LinkList p=(Node *)malloc(sizeof(Node));
        printf("请输入第%d个数据:",(i+1));
        scanf("%d",p->data);
        p->next=NULL;
        p->next=head->next;
        head->next=p; 
    } 
    
}

4.1 利用尾插法,运行的结果如下:

5、创建链表并输入数据之后,我们需要遍历链表,我调用了print函数来遍历链表,首先还是判断头结点是否为空,在这里我们需要定义一个指针p来指向head的指针域,判断当p不为空时,即遍历链表

int print(LinkList head){
    //判断头结点是否为空,为空即终止函数 
    if(head==NULL){
        return 0;
    }
    LinkList p=head->next;
    //当p不为空时,遍历链表 
    while(p!=NULL){
        printf("%d ",p->data);
        p=p->next;
    }
    
}

6、我们可以对链表进行操作,比如我们还可以利用头插法来插入一个数据,首先需要创建一个要插入的数据的指针,然后动态申请空间,插入链表中

//插入数据 
int charu(LinkList head){
    LinkList p=head;
    LinkList q=(Node *)malloc(sizeof(Node));
    printf("请输入你要插入的数据:");
    scanf("%d",&q->data);
    
    q->next=p->next;
    p->next=q;

6.1插入数据之后,运行的结果如下:

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘猫_A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值