当前位置: 首页 > news >正文

【数据结构】实验二 单链表的基本操作

一、实验目的

  1. 掌握线性表的链式存储结构的表示和实现方法。

  2. 掌握链表基本操作的算法实现,以及对相应算法的性能分析。

二、实验内容

  • 1)根据输入的一系列整数,以0标志结束,用头插法建立单链表,并输出单链表中各元素值,观察输入的内容与输出的内容是否一致。
  • 2)在单链表的第i个元素之前插入一个值为x的元素,并输出插入后的单链表中各元素值。
  • 3)删除单链表中第i个元素,并输出删除后的单链表中各元素值。
  • 4)在单链表中查找第i个元素,如果查找成功,则显示该元素的值,否则显示该元素不存在。

三、实验思路

代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef struct LNode{int data;struct LNode *next;
}LNode,*LinkList;
LinkList InitList(LinkList &l){l=new LNode;l->next=NULL;return l;
}
LinkList ListInsert(LinkList l,int i,int e){LNode *p;p=l;int j=0;while(p&&(j<i-1)){p=p->next;++j;}if(!p||j>i-1){printf("ERROR");return l;}LNode *s=new LNode ;s->data=e;s->next=p->next;p->next=s;return l;
}
LinkList ListDelete(LinkList l,int i){LNode *p=l;int j=0;while((p->next)&&(j<i-1)){p=p->next;++j;}if(!(p->next)||(j>i-1)){cout<<"ERROR"<<endl;}LNode *q=p->next;p->next=q->next;delete q;return l;
}
int LocateElem(LinkList l,int i){LNode *p=l->next;int j=0;while(p){j++;if(j==i){return p->data;}else{p=p->next;}}return 0;
}
void Print(LinkList l){LNode *p=l->next;while(p!=NULL){cout<<p->data<<" ";p=p->next;}cout<<endl;
}
int main(){LinkList l;l=InitList(l);int e,i=0;cout<<"请输入一系列整数,以0标志结束"<<endl;while(scanf("%d",&e)&&e!=0){i++;l= ListInsert(l,i,e);}Print(l);cout<<"请在第i个元素之前插入一个值为x的元素"<<endl;int j,x;cin>>j>>x;l= ListInsert(l,j,x);Print(l);cout<<"请输入要删除的第i个元素"<<endl;cin>>j;l= ListDelete(l,j);Print(l);cout<<"请输入想要查找的第i个元素"<<endl;cin>>j;int h= LocateElem(l,j);if(h!=0){cout<<h;}else{cout<<"该元素不存在";}return 0;
}

运行结果:

http://www.lryc.cn/news/484830.html

相关文章:

  • SQL 分组查询中的非聚合列要求及实例解析
  • Unity中实现战斗帧同步的高级技术
  • Qt 正则表达式提取文件中的 USB 设备 ID
  • 使用 Python 和 OpenCV 实现摄像头人脸检测并截图
  • 【二叉搜素树】——LeetCode二叉树问题集锦:6个实用题目和解题思路
  • 【计算机视觉】FusionGAN
  • 问:SQL优化,七条实践总结?
  • unity单例模式的不同声明(待完善
  • 大模型在蓝鲸运维体系应用——蓝鲸运维开发智能助手
  • vue2,vue3响应式的理解
  • 群控系统服务端开发模式-应用开发-前端退出功能
  • Web入门
  • 基于SpringBoot网上超市的设计与实现录像
  • python爬虫(二)爬取国家博物馆的信息
  • 【mysql的当前读和快照读】
  • [CKS] Audit Log Policy
  • 【Linux】-学习笔记03
  • Leetcode热题100-32 最长有效括号
  • 【大数据学习 | HBASE】hbase的读数据流程与hbase读取数据
  • A027-基于Spring Boot的农事管理系统
  • Redisson的可重入锁
  • SQL Server Service Broker完整示例
  • CentOS7 升级OpenSSH9.0全过程和坑
  • RSTP的配置
  • 力扣257:二叉树的所有路径
  • Tcl 和 Python 在二次开发研究
  • 【NLP优化】Ubuntu 20.04 下 源码安装 CasADi + Ipopt / acados
  • [241110] 微软发布多智能体系统Magentic-One | 社区讨论:Ubuntu 26.04 LTS 发布前移除 Qt 5
  • AI风向标|算力与通信的完美融合,SRM6690解锁端侧AI的智能密码
  • MySQL查询执行(六):join查询