线性表-单链表(c语言)

C语言——线性表及其应用(单链表和顺序表) 程序要求 1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。 2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68。 3.建立一个带头结点的单链表,结点的值域为整型数据。要求将用户输入的数据按尾插入法来建立相应单链表。 输入和输出的格式 1.顺序线性表的建立、插入及删除 顺序表 #include<stdio.h&gt... 阅读详情

线性表–单链表的代码实现(完整):

#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#define ERROR 0
#define OK 1
#define FALSE 0
#define TRUE 1

typedef int Status;
typedef int ElemType;		

//单链表的存储结构
typedef struct Node
{
	ElemType data;
	struct Node* next;
}Node, * LinkList;

//初始化操作
Status InitList(LinkList* L)
{
	*L = (LinkList)malloc(sizeof(Node));
	if (!(*L))
	{
		return ERROR;
	}
	(*L)->next = NULL;

	return OK;
}

//单链表的读取
Status GetElem(LinkList L, int i, ElemType* e)
{
	int j;
	LinkList p;
	p = L->next;			
	j = 1;
	while (p && j < i)		//p不为空,循环遍历到i
	{
		p = p->next;
		j++;
	}

	if (!p || j > i)		
	{
		return ERROR;
	}
	*e = p->data;
	return OK;
}

//插入操作
Status ListInsert(LinkList* L, int i, ElemType e)
{
	int j;
	LinkList p, s;

	p = *L;
	//此时p为链表中带头结点
	j = 1;

	while (p && j < i)   // 用于寻找第i个结点
	{
		p = p->next;
		j++;
	}

	if (!p || j > i)
	{
		return ERROR;
	}

	s = (LinkList)malloc(sizeof(Node));
	s->data = e;

	s->next = p->next;
	p->next = s;

	return OK;
}

//删除操作
Status ListDelete(LinkList* L, int i, ElemType* e)
{
	int j;
	LinkList p, q;

	p = *L;
	j = 1;

	while (p->next && j < i)
	{
		p = p->next;
		++j;
	}

	if (!(p->next) || j > i)
	{
		return ERROR;
	}

	q = p->next;
	p->next = q->next;

	*e = q->data;
	free(q);

	return OK;
}

//头插法
void CreateListHead(LinkList* L, int n)
{
	LinkList p;
	int i;

	srand(time(0));   // 初始化随机数种子

	*L = (LinkList)malloc(sizeof(Node));
	(*L)->next = NULL;

	for (i = 0; i < n; i++)
	{
		p = (LinkList)malloc(sizeof(Node));  // 生成新结点
		p->data = rand() % 100 + 1;
		p->next = (*L)->next;
		(*L)->next = p;
	}
}

//尾插法
void CreateListTil(LinkList* L, int n)
{
	LinkList p, r;
	int i;

	srand(time(0));
	//初始化随机数种子

	*L = (LinkList)malloc(sizeof(Node));
	r = *L;

	for (i = 0; i < n; i++)
	{
		p = (LinkList)malloc(sizeof(Node));
		p->data = rand() % 100 + 1;
		r->next = p;
		r = p;
	}
	r->next = NULL;
}

//整表清空
Status ClearList(LinkList* L)
{
	LinkList p, q;
	p = (*L)->next;
	while (p)
	{
		q = p->next;
		free(p);
		p = q;
	}
	(*L)->next = NULL;
	return OK;
}

//打印
void ShowList(LinkList L)
{
	LinkList p;
	p = L->next;
	while (p)
	{
		printf("%d ", p->data);
		p = p->next;
	}
}

//主方法
int main()
{
	LinkList L;
	Status i;
	i = InitList(&L);			
	CreateListHead(&L, 10);			//调用头插法操作函数创建长度为10的单链表
	ShowList(L);	
	return 0;
}
数据结构---线性表之单链表(C语言) 数据结构---线性表之单链表,包括单链表的创建、插入、删除等,C语言编写 立即下载

相关推荐

数据结构项目一之电子通讯录(单链表)

使用单链表实现简单的电子通讯录,节点的结构用结构体实现。

线性表之单链表

在链表存储结构中,每个节点用于存储线性表的一个元素,每个节点不仅包含有所存元素本身的信息(数据域),还包含元素之间逻辑关系的信息,即前驱节点包含后继节点的地址信息,称为指针域,这样可以比较方便的查找后继节点的位置.我们再次讨论的单链表为了方便链表的操作,都是默认带头结点的.只要我们拿到了头结点我们就等于拿到了整个链表的节点 一,基本操作 1,头插法建立单链表    这样得到的链表节点顺序和插入

无他,唯手熟尔! 1146

[捷稀 JCG Q30 Pro 刷机说明] 以刷入openwrt24.10为例

摘要: 本文详细介绍了捷稀JCG Q30 Pro路由器刷入OpenWrt 24.10系统的步骤。通过先刷入OpenWrt 23.05过渡固件,再升级Uboot,最后通过TFTP加载工厂镜像完成刷机。关键步骤包括解锁分区、刷写Uboot、进入恢复模式及配置网络。文章还提供了无线设置、Tailscale内网穿透等进阶命令,并附参考文档和固件下载链接。适用于有一定技术基础的玩家,需注意操作风险,严格按流程执行。

贤时间 7130

线性表的链式实现(单链表)

单链表的定义 为了表示每个数据元素与其直接后续元素之间的逻辑关系,每个元素除了存储本身的信息外,还需要存储指示其直接后续的信息,即每个结点存放本身的数据元素和下一个元素的地址。n个结点连接成一个链式线性表的结构我们叫做链表,当每个结点只包含一个指针域时,叫做单链表。 首先给出一个线性表,存放数据元素,a1到 an有这样的线性逻辑关系。单链表在存储空间上是这样存放的,它是存放在任意位置的,这个任意位置表示它们不一定要连续。如图所示的 a2、a3与 a3、a4。 第二个很明显的差别是单链表在存...

tecoes的博客 1547

别再让充电器‘罢工’了!聊聊Charger里VIN-DPM这个不起眼但关键的功能

本文深入探讨了充电IC中的VIN-DPM(输入电压动态电源管理)功能,揭示其如何智能调节充电策略以避免电源适配器过载。通过实际案例和实验室数据,展示了VIN-DPM在提升充电稳定性和效率中的关键作用,并提供了选型、设计和故障排查的实用指南。

weixin_33738578的博客 416

基于ESP32-S3的电子吧唧DIY:蓝牙传图、触摸交互与动态显示全解析

本文详细解析了如何利用ESP32-S3芯片DIY一个功能丰富的电子吧唧(智能徽章)。项目核心实现了通过蓝牙低功耗(BLE)接收手机小程序发送的图片,并存储至文件系统,最终在带触摸功能的TFT屏幕上进行动态显示与交互。教程涵盖了从硬件选型、软件开发环境搭建,到蓝牙通信、图片处理与触摸功能实现的完整步骤,并分享了实用的调试技巧,适合创客和嵌入式爱好者动手实践。

weixin_42510243的博客 672

【数据结构】— 线性表之「单链表」的实现

作者:甘城なつき 文章简介:带各位手把手去实现以及更深刻地了解一下单链表。

qq_63938813的博客 1351

【遥感数字图像处理(朱文泉)】第一章 数字图像基础

关于图像的定义、类型、模拟图像和数字图像

甜子yu的博客 4401

数据结构之线性表中的单链表【详解】

单链表最详解

狂小伍的博客 1024

外设高级定时器互补输出带死区控制实验

外设高级定时器互补输出带死区控制实验

ff_juju的博客 1652

【LaTeX PPT模板集】Beamer主题与配色使用教程

【LaTeX PPT模板集】Beamer主题与配色使用教程

Xminyang的博客 1万+

【数据结构】线性表:链式存储--链表(8种) C语言实现

线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。每个数据元素除了存储其本身的信息之外,还存储一个指示其直接后继的信息(基地址指针),所以数据元素有两个域:数据域和指针域。

crr411422的博客 2348

unity之——解决利用Jenkins在Windows环境下打包unity工程中的场景为apk包,打包打不出来的问题。并且介绍Jenkins从安装到环境配置,调用unity代码的过程(填坑)!!!!!

今天第一次接触Jenkins,比较头疼。网上的Jenkins配置环境相关的资料比较散乱,并且在Windows平台下相关的配置更是少之又少。我在这里讲一下从Jenkins安装到构建工程。打包unity工程的apk包的过程。 1.首先去Jenkins官网下载安装就不说了,安装完成之后在浏览器中输入http://localhost:8080(默认访问地址)进入Jenkins web界面。进行账号的注册...

cgy56191948的博客 2019

基于C语言的线性表操作,包含单链表和顺序线性表两种类型

用了四天的闲余时间,终于写完了线性表的顺序和链式两种结构的代码,进度有些慢,因为的确遇到了一些问题,也学到了一些知识,上传代码,同时代码同步更新到我创建的项目里,欢迎指出代码或者算法等等的不足和修改意见! 项目链接:https://code.youkuaiyun.com/a894554149/link_based_on_c/tree/master /*顺序存储结构的线性表操作函数*/ #i

RiRiRicardo的博客 934

LAMMPS-使用MATLAB计算径向分布函数

首先需要使用LAMMPS进行分子动力学模拟,并获取到所需的数据文件,LAMMPS是一款开源的分子动力学模拟软件,可以模拟原子、分子和离子的运动行为,对于本文的目标假设你已经完成了LAMMPS的安装和模拟过程,获得了数据文件。)是一种重要的统计工具,用于描述原子或分子之间的空间分布情况,通过计算RDF可以获得物质的结构信息、相互作用距离以及相位转变等重要参数,本文将介绍如何使用MATLAB计算LAMMPS生成的数据文件的径向分布函数。变量替换为你的实际数据文件的名称。

weixin_50547796的博客 514

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【数据结构】线性表(二)—— 单链表(C语言版)

// 链表:单向链表、 循环链表、 双向链表 // 头结点为 存取数据元素 的情况 #include <stdio.h> #include <stdlib.h> #include <time.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define......

haoweixl的博客 2812

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

数据结构--线性表(单链表C语言实现)

//单链表的练习#include "stdlib.h" #include "stdio.h" void printLinkList(struct node *h);//单链表数据结构 typedef struct node { int data; //数据域 struct node *next; //指针域 }Lnode,*LinkList;//创建链表 带头结点 L

karmacode的博客 2735

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数据结构严蔚敏 线性表基本操作C语言实现(单链表)

【数据结构(严蔚敏)】 线性表基本操作C语言实现(单链表) vs2017 算法2.8–算法2.11 #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;iostream&gt; using namespace std; #define TRUE 1 #define FALSE 0 #define OK 1 #define ER...

欢乐佛的博客 2359

环境下实现单链表的操作_线性表简单介绍以及单链表的c语言实现

什么是线性表?线性表就是一组数据的集合以某种特定方式排列。该排列方式中除第一个元素和最后一个元素外,每一个元素的前面和后面都有其他元素。第一个元素前面没有其他元素,最后一个元素后面没有其他元素。线性表在计算机中有不同的存储方式,比如:顺序存储也就是说数据前后的数据在计算机的存储器中是一个一个挨着存的。(其c语言实现方式见一个顺序结构单链表的简单实现)而在单链表中,数据在计算机中的存放位置...

weixin_30062415的博客 80

线性表---单链表操作解析(C语言版)

这几天一直在自学线性表这块内容总算把链表给弄明白了,线性表是之后栈和队列的基础,也是之后种种数据结构的基础,这几天学下来花了很多时间也看了很多资料,将这几天学习心得下来既算是对于单链表学习的一个总结,也希望可以给一些同样在学习的同学一些帮助。 在正式进入具体操作之前我们应该做几项预备工作。 1是一些基本的宏 与定义 #include<stdio.h> #include<stdli...

weixin_43599057的博客 467

【C语言】线性表之顺序表、单链表、双向链表详解及实现

/ 可根据需要修改元素类型// 指向动态开辟的数组int size;// 当前有效元素个数// 当前容量} SL;} SLNode;} LTNode;线性表是数据结构的基础,顺序表和链表各有优劣。顺序表适合静态数据、频繁随机访问的场景;链表适合动态变化、频繁插入删除的场景。在实际开发中,应根据具体需求选择合适的结构。本文通过C语言完整实现了顺序表、单链表和双向循环链表的核心操作,希望读者能通过代码加深对线性表的理解,并能够灵活运用。

键盘敲碎了雾霭的博客 887

c语言单链表实现存储,数据结构C语言版 线性表的单链表存储结构表示和实现.doc...

数据结构C语言版 线性表的单链表存储结构表示和实现#include #include #include /*数据结构C语言版 线性表地单链表存储结构表示和实现P28-31编译环境:Dev-C++ 4.9.9.2日期:2011年2月10日*/typedef int ElemType;// 线性表地单链表存储结构typedef struct LNode{ElemType data;//数据域struc...

weixin_28713083的博客 199

数据结构:线性表(单链表)C语言简单实现

线性表(单链表)C语言简单实现 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define _CRT_SECURE_NO_WARNINGS #define ok 1 #define error -1 typedef int Elemtype; typedef int Status; //带头结点的 typedef struct LNode{ Elemtype data; struct

qq_45811908的博客 981

数据结构与算法(C语言)代码实现-线性表的相关操作代码实现(单链表)

c语言数据结构与算法的代码实现,实现了线性表(单链表)的相关操作,例如增删改查等操作

没有简介就是简介 904

【数据结构】线性表的链式存储——单链表(C语言版)

线性表的链式存储又称单链表。通过一组任意的存储单元存储线性表中的数据元素,每个链表结点不仅存放数据,还会存放一个指向下一结点的指针。

Go_big的博客 539

C语言数据结构-线性表-单链表

#include #include typedef struct LNode{ int num; struct LNode *next; }LNode, *LNodeList; LNodeList init(){ LNodeList lList=(LNodeList)malloc(sizeof(struct LNode)); lList->num=0; lL

wangwei86609的专栏 389
上一篇: vs2019运行项目时报错出现MSB6006 “CL.exe”已退出,代码为 2。
下一篇: 数据结构学习笔记----第一章:绪论
Cc_sec
博客等级 码龄8年 6粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值