线性表——链表详解(C语言)

# include <stdio.h>
# include <stdlib.h>
typedef int E;

/**
 * 带头结点的链表
 * 1.初始化链表
 * 2.链表的插入:在指定位置index上插入元素(难点)
 * 3.链表的删除:删除指定位置index上的元素
 * 4.获取指定节点位置的元素
 * 5.根据元素获取指定位置(设定元素唯一)
 * 6.获取链表总长
 */

struct ListNode{
   
   
    E e;  //保存当前元素
    struct ListNode * next;  //指向下一节点的指针
};

typedef struct ListNode * Node;  //为结点指针起别名

//初始化链表
void initNode(Node head){
   
   
    head -> next = NULL;  //头节点默认下一个为NULL
}

//插入链表
//head是头节点,e是待插入元素,index是待插入下标
_Bool insertNode(Node head,E e,int index){
   
   
    if(index < 1) return 0;
    //寻找前驱节点
    while(--index){
   
   
        head = head -> next;
        if(head == NULL) return 0;
    }

    Node node = malloc(sizeof (struct ListNode));//创建一个新的节点,申请内存
    if(node == NULL) return 0; //处理申请失败
    node -> e = e;
    node -> next = head -> next;
    head -> next = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值