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

数据结构项目——单向链表[通俗易懂]使用单向链表(增加,删除,查询,修改)代码如下:#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;
}

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JAVA基础知识之OutputStreamWriter流

    JAVA基础知识之OutputStreamWriter流一、OutputStreamWriter流   API说明:OutputStreamWriter是从字符流到字节流的桥接:使用指定的字符集将写入其中的字符编码为字节。它使用的字符集可以通过名称指定,也可以明确指定,或者可以接受平台的默认字符集。每次调用write()方法都会导致在给定字符上调用编码转换器。生成的字节在写入底层输出流之前在缓冲区中累积。可以指定此缓冲区的大小,但默认情况下,它…

    2025年11月1日
    4
  • 422模块接线_422接口定义

    422模块接线_422接口定义#硬件芯片422引脚连接方式前言参考连接对应表举例-正好拿手头的一款芯片链接举例查手册前言最近调试串口转422程序,便买了一个“多功能5和1的转换器“,如下图所示,但是调试的时候,没怎么看线序,改线后忘记如何连接,只能重新查找资料,为例方便更多人也方便自己记录参考。参考连接个人觉的写言简意赅的,美中不足的地方就是看着费劲,所以优化了一下。参考如下连接:https://blog.csdn.net/fzktongyong/article/details/86163206对应表举例-正好拿手头的

    2022年8月30日
    6
  • CEGUI 动画

    CEGUI 动画最新的版本支持动画,使用Animation类.项目中使用的是7.1的版本,不支持动画,leader说不使用最新版本的CEGUI库,就使用7.1,无奈,自己写一个动画类吧.CEGUI中播放动画是将一个动画的每帧连续不断的画到屏幕上,就形成了动画.就像小时候在书的边页上面画的小人,每一页都画一个小人,每个小人的动作都有点不同,这样快速翻书的时候,小人就成了动画.源代码如最后所贴,原理性的东西就不多讲,…

    2022年7月24日
    13
  • 详解 Java 内部类

    详解 Java 内部类前言内部类在Java里面算是非常常见的一个功能了,在日常开发中我们肯定多多少少都用过,这里总结一下关于Java中内部类的相关知识点和一些使用内部类时需要注意的点。从种类上说,内部类可以分为四类:普通内部类、静态内部类、匿名内部类、局部内部类。我们来一个个看:普通内部类这个是最常见的内部类之一了,其定义也很简单,在一个类里面作为类的一个字段直接定义就可以了,例:pub…

    2022年10月11日
    4
  • Asp.net Session 与Cookie的应用

    写程序的很多人都知道的,Session是服务器端的东西而Cooike是客户端的东西。因为B/S模式是无状态模式,它们的应用都是要存储客户端的某些登录或是加密的信息。Session存在于服务器端,当然

    2021年12月27日
    41
  • java 工作流 详解

    java 工作流 详解工作流基本概念:什么是工作流? 工作流:两个或两个以上的人,为了共同的目标,连续的以串行或并行的方式去完成某一业务。 业务:工作流所指业务涵盖了与经营相关的活动。   串行或并行:业务中的步骤也许以一步接着一步的方式进行,我们称之为串行;或者由不同的人或组合根据不同的情况处理,我们称之为并行。   两个或两个以上的人:如工作流的名称所表达的含义,一个人处理的业务

    2022年5月16日
    346

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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