无头结点的单链表一系列操作

本文详细介绍了无头结点单链表的各种操作,包括初始化、建立、查找、插入、删除、计算长度及打印。通过C++代码实现,深入解析了尾插法、头插法、前插法、后插法以及按序号和按值的查找、删除等关键算法。

 

无头结点的单链表的一系列操作

没有头结点的链表,C++实现其初始化,建立,插入,删除,查询,计算长度,输出。感觉没有头结点好多操作都变得复杂了那么一丢丢。

目录

 

无头结点的单链表的一系列操作

初始化

建立

查找

插入

删除

计算链表长度

打印链表


初始化

typedef int datatype;
struct nodes{
    datatype data;
    nodes *next;
};
struct Lists{
    nodes *head;
};
//初始化
Lists init(){
    Lists List;
    List.head=NULL;
    return List;
}

建立

尾插法

//无头结点的尾插法
void CreatListI(Lists *List){
    datatype num;
    cout<<"输入数据元素,当数据元素为-1时结束"<<endl;
    while(cin>>num&&num!=-1){
        nodes *temp=(nodes*)malloc(sizeof(nodes));
        temp->data=num;
        temp->next=NULL;
        nodes *tail;
        if(List->head==NULL){
            List->head=temp;
            tail=List->head;
        }
        else {
            tail->next=temp;
            tail=temp;
        }
    }
}

尾插法实现链表的建立,尾插法主要是通过一个指向链表最后一个结点的指针tail,每次插入都插在tail->next,并更新tail,注意插入第一个结点时需要特殊操作一波。

头插法

//无头结点的头插法
void CreatListII(Lists *List){
    datatype num;
    cout<<"输入数据元素,当数据元素为-1时结束输入"<<endl;
    while(cin>>num&&num!=-1){
        nodes *node=(nodes*)malloc(sizeof(nodes));
        node->data=num;
        node->next=List->head;
        List->head=node;
    }
}

头插法实现链表的建立。头插法是把需要插入的结点插到链表的第一个位置,插入完成后链表的顺序和插入的顺序是相反的。头插法和尾插法,感jio就是“茴”的多种写法。。。

查找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值