栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2023王道数据结构-单链表基本操作的实现代码(C++版)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2023王道数据结构-单链表基本操作的实现代码(C++版)

在学习数据结构单链表的时候随手写的代码,发到这里供大家参考参考。

     目录

        一、实验代码

        二、运行结果

        总结


一、实验代码

代码如下:

#include 
using namespace std;

typedef struct LNode 
{
    int data;
    struct LNode* next;
}LNode, * LinkList;
//初始化链表
void initList(LinkList& L)
{
    L = (LinkList)malloc(sizeof(LNode));
    L->next = NULL;
}
//尾插法建立单链表
void list_tailInsert(LinkList &L) 
{
    int x;
    LNode* s, * r = L;
    cout << "请输入元素:(输入9999结束输入)";
    cin >> x;
    while (x != 9999) {
        s = (LNode*)malloc(sizeof(LNode));
        s->data = x;
        r->next = s;
        r = s;
        cout << "请输入元素:";
        cin >> x;
    }
    r->next = NULL;
}
//打印单链表
void printmyList(LinkList L) 
{
    LNode* p = L->next;
    cout << "打印链表:" << " ";
    while (p != NULL) {
        cout << p->data << " ";
        p = p->next;
    }
    cout << endl;
}
//按序号查找节点
LNode* GetElem(LinkList L, int i) 
{
    if (i < 0)
        return NULL;
    int j = 0;
    LNode* p = L;
    while (p != NULL && j < i)
    {
        p = p->next;
        j++;
    }
    return p;
}

//按值查找节点
LNode* LocateElem(LinkList L, int e) 
{
    LNode* p = L->next;
    while (p != NULL) {
        p = p->next;
        if (p->data == e)
            return p;
    }
    return NULL;
}

//插入节点
bool insertElem(LinkList& L, int i, int e)
{
    if (i < 1)
        return false;
    LNode* p = GetElem(L, i - 1);
    LNode* s;
    s = (LNode*)malloc(sizeof(LNode));
    s->data = e;
    s->next = p->next;
    p->next = s;
    return true;
}

//删除节点
bool delElem(LinkList& L, LNode *p) 
{
    if (p == NULL)
        return false;
    LNode* s = p->next;
    p->data = s->data;
    p->next = s->next;
    free(s);
    return true;
}
//求表长
int get_list_length(LinkList L) 
{
    int i = 0;
    LNode* p = L->next;
    while (p != NULL) {
        p = p->next;
        i++;
    }
    return i;
}

int main()
{
    LinkList L;
    initList(L);
    list_tailInsert(L);
    printmyList(L);
    cout << "打印链表第2个元素的next指针与第三个元素" << endl;
    cout << GetElem(L, 2)->next << endl;
    cout << GetElem(L, 3) << endl;
    cout << "在链表第2个位置插入520" << endl;
    insertElem(L, 2, 520);
    cout << "查找链表元素520,并打印" << endl;
    if (LocateElem(L, 520) != NULL)
        cout << LocateElem(L, 520)->data << endl;
    printmyList(L);
    LNode* p;
    p = GetElem(L, 3);
    cout << "删除元素:"<data << endl;
    delElem(L, p);
    printmyList(L);
    cout <<"链表长度为:"<< get_list_length(L) << endl;
}
二、运行结果

运行结果如下:


        总结

        以上代码可以直接在编译器上运行,希望这篇文章能让大家对单链表的基本操作更加熟悉,如有没考虑周全之处,还望指出。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873012.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号