数据结构项目——单向链表[通俗易懂]

数据结构项目——单向链表[通俗易懂]使用单向链表(增加,删除,查询,修改)代码如下:#include “pch.h”#include<string>#include <iostream>using namespace std;struct LNode{ int data;// 数据域 LNode *next; // 指针域};//新建链表void NewList(LNode *…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

使用单向链表(增加,删除,查询,修改)

代码如下:

#include "pch.h"
#include<string>
#include <iostream>
using namespace std;
struct LNode
{ 

int data;// 数据域
LNode *next; // 指针域
};
//新建链表
void NewList(LNode *L, int lenght)
{ 

int v;					//储存数据域
LNode *p;
L->next = NULL;
for (int i = lenght; i > 0; i--)
{ 

//L = new LNode; //c++申请空间
LNode *p = new LNode();
//p = (LNode*)malloc(sizeof(LNode)); //c申请空间
cin >> v;
p->data = v;
p->next = L->next;
L->next = p;
}
}
//查找线性表指定位置的元素值
int GetElem_L(LNode* L, int i, int e)
{ 

LNode *p;
p = L->next;
int j = 1; 				//初始化
while (p&&j < i)		//向后扫描,直到p指向第i个元素或p为空 
{ 

p = p->next;
++j;
}
if (!p || j > i)
{ 

return 0;			//第i个元素不存在 
}
e = p->data; 			//取第i个元素 
return 1;
}
//在链表中指定位置插入元素
int ListInsert_L(LNode *L, int i, int e)
{ 

LNode* p = L;
int j = 0;
while (p&&j < (i - 1))//寻找第i−1个结点 
{ 

p = p->next; ++j;
}
if (!p || j > (i - 1))
{ 

return 0;		//i大于表长 + 1或者小于1 
}
LNode* s = new LNode;				//生成新结点s 
s->data = e;      		           	//将结点s的数据域置为e 
s->next = p->next;	   	          	//将结点s插入L中 
p->next = s;
return 1;
}
//将线性表L中第i个数据元素删除
int ListDelete_L(LNode *L, int i, int e)
{ 

LNode* p = L;
int j = 0;
while (p->next &&j < i - 1)		//寻找第i个结点,并令p指向其前驱 
{ 

p = p->next;
++j;
}
if (!(p->next) || j > i - 1)
{ 

return 0; 					//删除位置不合理 
}
LNode *q = p->next; 			//临时保存被删结点的地址以备释放 
p->next = q->next; 				//改变删除结点前驱结点的指针域 
e = q->data; 					//保存删除结点的数据域 
delete q; 						//释放删除结点的空间 
return 1;
}
//显示链表中的节点元素
int PrintNode(LNode *L)
{ 

LNode *p;
p = L->next;
if (p == NULL)
{ 

cout << "链表为空!" << endl;
}
cout << "链表元素为:";
while (p != NULL)
{ 

cout << p->data << " ";
p = p->next;
}
cout << endl;
return 1;
}
int main()
{ 

LNode L;
int a, m, s;
//建立
cout << "请输入链表长度:";
cin >> a;
cout << "请输入" << a << "个节点的数据" << endl;
NewList(&L, a);
PrintNode(&L);
//插入
cout << "请输入所要插入的位置以及数据:";
cin >> m>>s;
ListInsert_L(&L, m, s);
PrintNode(&L);
//删除
cout << "请输入所要删除的位置以及数据:";
cin >> m >> s;
ListDelete_L(&L,m,s);
PrintNode(&L);
//查找
cout << "请输入所要查找的位置以及数据:";
cin >> m >> s;
if (ListInsert_L(&L, m, s))
{ 

cout << "该元素存在!" << endl;
}
else
{ 

cout << "该元素不存在!" << endl;
}
return 0;
}

结果为:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/170976.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • int和int32的区别_int是多少位的

    int和int32的区别_int是多少位的大家有没有写了很久代码,还不知道这个Int8,Int16,Int32,Int64有什么区别呢?或者是为什么后面的数字不一样呢?初步了解了一下,才清楚这个东西。先来扫盲一下计算机存储单元,  在计算机内部,信息都是釆用二进制的形式进行存储、运算、处理和传输的。信息存储单位有位、字节和字等几种。各种存储设备存储容量单位有KB、MB、GB和TB等几种计算机的基本的存储单元有:…

  • java服务器开发心得

    java服务器开发心得本人已从事java服务器开发三年多了,对java服务器开发比较有心得,特此对这三年多来进行下技术总结,并与大家分享。作为服务器开发,对基础知识的掌握程度,将决定你的服务器各方面的能力,一般在进行java服务器开发前,最重要的是能够熟练运用以下技术:javaclassLoader、javathread、javaI/O(NIO)和javasocket。 一般来说,服务器设计大致

  • Android 实现锚点定位

    Android 实现锚点定位

  • python hashlib_python加密之hashlib[通俗易懂]

    python hashlib_python加密之hashlib[通俗易懂]1、强大的hashlib,提供了用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法2、hmac模块实现了hmac算法,需要一个key来进行加密,提供更为强大的加密,不过需要提供key,也就是通常说的盐3、使用hashlib.algorithms_available,可以查看hashlib提供的加密算法…

  • HTML5 canvas 捕鱼达人游戏

    在线试玩:http://hovertree.com/texiao/html5/33/html5利用canvas写的一个js版本的捕鱼,有积分统计,鱼可以全方位移动,炮会跟着鼠标移动,第一次打开需要鼠

    2021年12月24日
  • 如何判断Linux是32位还是64位

    如何判断Linux是32位还是64位

    2021年10月18日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号