链表的基础基础操作

news/2025/4/26 11:48:49/
#include<iostream>
#include<iomanip>
#include<cmath>
#include<cstdio>
using namespace std;
#define Maxsize 100
#define ElemType int 
#define Status int 
typedef long long ll;
typedef struct Node
{int data;//数据存储struct Node *next;//指针域
}Node,*List;List Init_List()
{Node *ls;ls=(Node*)malloc(sizeof(Node));//申请结点空间if(ls==NULL) exit(0);//如果失败则退出程序ls->next=NULL;return ls;
}
//头插法创建链表
List Creat_ls_head()
{Node *ls;ls=(Node*)malloc(sizeof(Node));ls->next=NULL;int x;while(scanf("%d",&x)){if(x==-1) break;Node *p;p=(Node*)malloc(sizeof(Node));p->data=x;//将该节点赋值为x//ls-NULL--L-p--NULLp->next=ls->next;ls->next=p;//更新一下L的指针永远指向头部cout<<"结点创建完成!"<<endl;}return ls; 
}//尾插法创建链表
List Creat_ls_tail()
{Node *ls;ls=(Node*)malloc(sizeof(Node));ls->next=NULL;int x;//设置一个尾节点rNode *r;r=ls;while(scanf("%d",&x)){if(x==-1) break;Node *p;p=(Node*)malloc(sizeof(Node));p->data=x;//将该节点赋值为xr->next=p;//r要永远代表最后一个节点r=p;cout<<"结点创建完成!"<<endl;}r->next=NULL;//cout<<"OK"<<endl;return ls; 
}
//打印链表
void ls_display(List L)
{Node *p=L->next;int cnt=0;while(p){cnt++;cout<<"第"<<cnt<<"个元素的值为:"<<p->data<<endl;//p指针下移一个p=p->next;}
}
//对于元素进行修改
List ls_replace(List ls,int x,int y)
{Node *p=ls->next;int cnt=0;while(p){if(p->data==x) p->data=y;//将所有的x替换成y;p=p->next;}return ls;
}
List ls_insert(List ls,int i,int x)
{Node *p;p=ls;//将指针指第i个位置的前驱	for(int ti=0;ti<i;ti++)  p=p->next;Node *q;q=(Node*)malloc(sizeof(Node));//插入的结点为qq->data=x;q->next=p->next;p->next=q;return ls;
}
//删除值为x的元素
List ls_delete(List ls,int x)
{Node *p,*q;p=ls->next;while(p->data!=x){q=p;p=p->next;}//此时已经找到的话q->next=p->next;free(p);return ls;
}
int main()
{//①利用尾插法进行创建链表List ls1;cout<<"****************************************"<<endl;cout<<"请输入单链表的数据:以-1结尾"<<endl;ls1=Creat_ls_tail();ls_display(ls1);cout<<"****************************************"<<endl;//②利用头插法进行创建链表List ls2;cout<<"****************************************"<<endl;cout<<"请输入单链表的数据:以-1结尾"<<endl;ls2=Creat_ls_head();ls_display(ls2);cout<<"****************************************"<<endl;//执行插入操作int i;int x;cout<<"****************************************"<<endl;cout<<"请输入插入数据的位置:";cin>>i;cout<<"请输入插入的数值大小:";cin>>x;cout<<"原序列的表示如下所示:"<<endl;ls_display(ls2);cout<<"现序列的表示如下所示:"<<endl;ls_insert(ls2,i,x);ls_display(ls2);cout<<"****************************************"<<endl;//执行修改操作cout<<"****************************************"<<endl;cout<<"请输入原来数据的值:";cin>>i;cout<<"请输入修改的数值大小:";cin>>x;cout<<"原序列的表示如下所示:"<<endl;ls_display(ls2);cout<<"现序列的表示如下所示:"<<endl;ls_replace(ls2,i,x);ls_display(ls2);cout<<"****************************************"<<endl;//执行删除操作cout<<"****************************************"<<endl;cout<<"请输入需要删除的数据的值:";cin>>x;cout<<"原序列的表示如下所示:"<<endl;ls_display(ls2);cout<<"现序列的表示如下所示:"<<endl;ls_delete(ls2,x);ls_display(ls2);cout<<"****************************************"<<endl;cout<<"完成所有链表的操作!"<<endl;return 0;
}


http://www.ppmy.cn/news/1503837.html

相关文章

分布式相关理论详解

目录 1.绪论 2.什么是分布式系统&#xff0c;和集群的区别 3.CAP理论 3.1 什么是CAP理论 3.2 一致性 3.2.1 计算机的一致性说明 1.事务中的一致性 2.并发场景下的一致性 3.分布式场景下的一致性 3.2.2 一致性分类 3.2.3 强一致性 1.线性一致性 a) 定义 a) Raft算法…

python爬虫初识

一、什么互联网 互联网&#xff08;Internet&#xff09;是全球范围内最大的计算机网络&#xff0c;它将数以百万计的私人、公共、学术、商业和政府网络通过一系列标准通信协议&#xff08;如TCP/IP&#xff09;连接起来形成的一个庞大的国际网络。 互联网的起源可以追溯到196…

【2024】InfluxDB v2 介绍和安装使用(1)

目录&#x1f4bb; 一、介绍1、时序数据库介绍特点&#xff1a;常见的时序数据库时序库受欢迎度排名 2、InfluxDB介绍**InfluxDB 1.x 和 2.0 的主要区别**InfluxDB行协议 二、docker安装 InfluxDB v2三. Web UI常用功能介绍以及使用1、页面介绍2、功能使用2.1、创建bucket2.2、…

【Linux 网络】链路层

文章目录 链路层1 以太网1.1 以太网帧格式1.2 MAC地址1.3 MTU 2. ARP协议2.1 ARP协议的作用2.2 ARP数据报格式2.3 ARP的流程 其他协议3. DNS协议3.1 域名3.2 输入URL后的事情 4. ICMP协议4.1 ICMP 功能都有啥&#xff1f;4.2 基于ICMP的命令ping命令 5. NAT协议5.1 NAT技术背景…

Kafka设计与原理详解

RocketMQ 是一款开源的分布式消息系统&#xff0c;基于高可用分布式集群技术&#xff0c;提供低延时的、高可靠的消息发布与订阅服务。同时&#xff0c;广泛应用于多个领域&#xff0c;包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即…

第三十一天 chrome调试工具

打开调试工具 页面空白处右击 检查 或者F12 使用调试工具 ctrl滚轮改变代码大小 左边是html 右边是css css可以直接改动数值左右箭头或者直接输入 查看颜色 ctrl0 复原浏览器大小 点击元素右侧出现样式引入 没有的话 说明类名或者样式引用错误 这里的.new-left是存在的 如果类…

我们的前端开发逆天了!1 小时搞定了新网站,还跟我说 “不要钱”

大家好&#xff0c;我是程序员鱼皮。前段时间我们上线了一个新软件 剪切助手 &#xff0c;并且针对该项目做了一个官网&#xff1a; 很多同学表示官网很好看&#xff0c;还好奇是怎么做的&#xff0c;其实这个网站的背后还有个有趣的小故事。。。 鱼皮&#xff1a;我们要做个官…

台湾物理服务器有什么优势

台湾物理服务器因其独特的地理位置、优质的网络连接以及高效的数据中心设施&#xff0c;成为了众多企业和个人用户的优选。物理服务器是指位于实体数据中心中的专用服务器硬件&#xff0c;它可以提供比虚拟服务器更高的性能和更直接的硬件访问权限。以下是台湾物理服务器的一些…