单链表的操作(超详细),保证你看完不后悔 您所在的位置:网站首页 单向链表定义栈基本操作 单链表的操作(超详细),保证你看完不后悔

单链表的操作(超详细),保证你看完不后悔

2024-01-07 23:38| 来源: 网络整理| 查看: 265

🌍新人小白的博客 ⌛️希望大家多多关注 🌱一起加油,共同成长 🎃以后会经常更新哒~🙈 ⭐️个人主页: 收藏加关注,永远不迷路~⭐️

数据结构系列👀

一:顺序表的操作,你真的学会了吗? 二:顺序栈的基本操作 三:循环队列的基本操作,你学会了吗?

文章目录 数据结构系列👀前言😺一、单链表是什么?🙉二、实现步骤🙊1.定义存储表示🐒2.定义操作函数🐗3.采用菜单样式让操作更加方便清楚。🐵4.完整代码🐻5.运行结果🐾 结语🌍

前言😺

🌱Tips:文章有点长,小主耐心一点哦~

😎编程实现单链表的以下基本操作:建立顺序表,修改顺序表,插入顺序表,删除顺序表。😜 222

一、单链表是什么?🙉

111 单链表是线性表的链式存取结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。💪🏻ヾ(◍°∇°◍)ノ゙

二、实现步骤🙊 1.定义存储表示🐒

例如顺序表的最大长度,存储空间基址,表长等。

//单链表的存储结构 typedef struct LNode { ElemType data; struct LNode *next; } LNode,*LinkList; 2.定义操作函数🐗

对函数进行初始化,构造销毁线性表的函数DestoryList,清空线性表的函数ClearList,求线性表长度的函数ListLength,判断线性表是否为空的函数ListEmpty,获取线性表中的指定位置元素内容GetElem,求前驱、后继的函数,在线性表指定位置插入元素的函数ListInsert,删除线性表指定位置元素ListDelete,显示线性表函数和退出的操作。

//初始化 Status InitList(LinkList &L) { L=new LNode; L->next=NULL; return OK; } //销毁 Status DestroyList(LinkList &L) { LinkList p; while(L) { p=L; L=L->next; delete p; } return OK; } //清空 Status ClearList(LinkList L) {// 将L重置为空表 LinkList p,q; p=L->next; //p指向第一个结点 while(p) //没到表尾 {q=p->next; delete p; p=q;} L->next=NULL; //头结点指针域为空 return OK; } //求长度 int ListLength(LinkList L) { //返回L中数据元素个数 LinkList p=L->next; //p指向第一个结点 int count=0; while(p){//遍历单链表,统计结点数 ++count; p=p->next; } return count; } //判断是否为空 bool ListEmpty(LinkList L) {//若L为空表,则返回true,否则返回false if(L->next==NULL) return true; else return false; } //取值 Status GetElem(LinkList L,int i,ElemType &e) { LinkList p=L->next; int j=1; while(p&&j LinkList p=L->next; while(p &&p->data!=e) p->next; return p; } //插入 Status ListInsert(LinkList &L,int i,ElemType e) { LinkList p=L; int j=0; while(p && (j LinkList p=L; int j=0; while((p->next)&&(j L=new LNode; L->next=NULL; for(int i=0; i L=new LNode; L->next=NULL; LinkList r=L; for(int i=0; i LinkList q=L->next;//第一个结点 if(!q)//若链表为空 return ERROR; LinkList p=q->next;//第二个结点 while(p) { if(p->data==cur_e) { *pre_e=q->data; return OK; } else { q=p; p=p->next; } } return ERROR; } //查找哪个元素的后继 Status ListNext(LinkList L,ElemType cur_e,ElemType *next_e) { LinkList p=L->next; while(p) { if(p->data==cur_e&&p->next) { *next_e=p->next->data; return OK; } else p=p->next; } return ERROR; } //显示线性表 void DisplayList(LinkList L) { LinkList p=L->next; while(p) { cout ElemType data; struct LNode *next; } LNode,*LinkList; //初始化 Status InitList(LinkList &L) { L=new LNode; L->next=NULL; return OK; } //销毁 Status DestroyList(LinkList &L) { LinkList p; while(L) { p=L; L=L->next; delete p; } return OK; } //清空 Status ClearList(LinkList L) {// 将L重置为空表 LinkList p,q; p=L->next; //p指向第一个结点 while(p) //没到表尾 {q=p->next; delete p; p=q;} L->next=NULL; //头结点指针域为空 return OK; } //求长度 int ListLength(LinkList L) { //返回L中数据元素个数 LinkList p=L->next; //p指向第一个结点 int count=0; while(p){//遍历单链表,统计结点数 ++count; p=p->next; } return count; } //判断是否为空 bool ListEmpty(LinkList L) {//若L为空表,则返回true,否则返回false if(L->next==NULL) return true; else return false; } //取值 Status GetElem(LinkList L,int i,ElemType &e) { LinkList p=L->next; int j=1; while(p&&j LinkList p=L->next; while(p &&p->data!=e) p->next; return p; } //插入 Status ListInsert(LinkList &L,int i,ElemType e) { LinkList p=L; int j=0; while(p && (j LinkList p=L; int j=0; while((p->next)&&(j L=new LNode; L->next=NULL; for(int i=0; i L=new LNode; L->next=NULL; LinkList r=L; for(int i=0; i LinkList q=L->next;//第一个结点 if(!q)//若链表为空 return ERROR; LinkList p=q->next;//第二个结点 while(p) { if(p->data==cur_e) { *pre_e=q->data; return OK; } else { q=p; p=p->next; } } return ERROR; } //查找哪个元素的后继 Status ListNext(LinkList L,ElemType cur_e,ElemType *next_e) { LinkList p=L->next; while(p) { if(p->data==cur_e&&p->next) { *next_e=p->next->data; return OK; } else p=p->next; } return ERROR; } //显示线性表 void DisplayList(LinkList L) { LinkList p=L->next; while(p) { cout char operate_code; show_help(); LinkList L; InitList(L); ElemType e; int i; while(1) { coutoperate_code; if(operate_code=='1') { cout cout int n; cout couti; if(ListInsert(L,i,e)==ERROR) cout cout cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有