数据结构——线性表

本文详细介绍了链表数据结构,包括链表的初始化、取值、查找、插入和删除操作。通过实例解析了单链表的创建(前插法和尾插法)及其动态操作,强调了在不同操作中传递指针类型的重要性,帮助读者掌握链表操作的核心技巧。
摘要由CSDN通过智能技术生成

链表

引入库 定义变量

#include<stdio.h>  
#include<stdlib.h>  
#include<stdbool.h>   
  
#define OK 1  
#define ERROR 0  
#define OVERFLOW -2  
  
typedef int Status;   
#define MAXSIZE 100  
typedef int ElemType;  
  

定义结点

typedef struct LNode{  
    ElemType data;  
    struct LNode *next;  
}LNode,*LinkList; 

1、结构体包括数据域和指针域,指针域的指针类型也是LNode类型的,因为指针指向的是下一个结点。

2、LNode表示的是这个结点,LinkList表示的是指向这个结构体的指针类型。

初始化

Status InitList(LinkList *L){  
//为头节点分配内存,并将分配的内存地址赋值给*L,修改传入的头结点指针本身 
    *L = (LNode *)malloc(sizeof(LNode));  
    if (*L == NULL) return ERROR;  
    (*L)->next = NULL;   //初始化空表 
    return OK;  
} 

1、使用malloc进行动态分配内存,大小为LNode结点的大小,返回的是结构体的指针类型(LNode)

2、在初始化的时候传递的是LinkList *L,即传递的是结构体指针的指针(指向 LinkList 的指针),是为了在函数内部能够修改调用者提供的指针变量(即原始的指针变量),从而初始化链表并返回链表的头节点地址给调用者。是为了完成初始化,初始化就需要对其本身进行操作,要改变结构体指针的指向,所以传递的是结构体的指针的指针。              因为修改的是结构体的指针的指向,所以传递的是结构体的指针的指针。

3、初

  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值