数据结构---单向链表

news/2025/1/15 15:10:10/

 

单向链表 

//链表的创建
Link_t *create_link()
{Link_t *plink = malloc(sizeof(Link_t));if(NULL == plink){perror("fail plink");return NULL;}plink->phead = NULL;plink->clen = 0;return plink;
}
//头插
int push_link_head(Link_t *plink, DataType data)
{Link_Node_t *pnode = malloc(sizeof(Link_Node_t));if(NULL == pnode){perror("fail malloc");return -1;}pnode->data = data;pnode->pnext = NULL;pnode->pnext = plink->phead;plink->phead = pnode;plink->clen++;return 0;
}
//尾插
int push_link_end(Link_t *plink, DataType data)
{Link_Node_t *p = plink->phead;if(p == NULL){push_link_head(plink, data);}else{while(p->pnext != NULL){p = p->pnext;}Link_Node_t *pnode = malloc(sizeof(Link_Node_t));if(NULL == pnode){perror("fail pnode");return -1;}p->pnext = pnode;pnode->pnext = NULL;pnode->data = data;plink->clen++;}return 0;
}
//头删
int push_head_pop(Link_t *plink)
{Link_Node_t *p = plink->phead;if(p == NULL){return 0;}else{plink->phead = p->pnext;free(p);}plink->clen--;return 1;
}
//尾删
int push_end_pop(Link_t *plink)
{Link_Node_t *p = plink->phead;if(p == NULL){return 0;}else if(p->pnext == NULL){push_head_pop(plink);}else{while(p->pnext->pnext != NULL){p = p->pnext;}free(p->pnext);p->pnext = NULL;plink->clen--;}return 1;
}

 在进行排序时,一次遍历结束指针指到了结尾,要重新把指针归到头节点,否则排序不成功。

//排序
void push_sort(Link_t *plink)
{if(1 == plink->clen || plink->phead == NULL){return;}Link_Node_t *pinsert = NULL;Link_Node_t *ptmp = plink->phead->pnext;plink->phead->pnext = NULL;while(ptmp != NULL){Link_Node_t *p = plink->phead;pinsert = ptmp;ptmp = ptmp->pnext;if(p->data > pinsert->data){pinsert->pnext = plink->phead;plink->phead = pinsert;}else{while(p->pnext != NULL && p->pnext->data < pinsert->data){p = p->pnext;}pinsert->pnext = p->pnext;p->pnext = pinsert;}}
}


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

相关文章

一台Linux服务器最多可以支撑多少个TCP连接

一台Linux服务器最多可以支撑多少个TCP连接&#xff1f; 1.端口号资源 在确定最大连接数之前&#xff0c;先来看看系统如何标识一个TCP连接。系统用一个4四元组来唯一标识一个TCP连接【源IP、源端口、目标IP、目标端口】 以Nginx为例&#xff0c;端口是固定使用80&#xff0…

pytorch torch.norm函数介绍

torch.norm 函数用于计算张量的范数(norm),可以理解为张量的“长度”或“大小”。根据范数的不同类型,它可以衡量不同的张量性质。该函数可以计算 向量 和 矩阵 的多种范数,如 L1范数、L2范数、无穷范数 等。 1. 函数签名 torch.norm(input, p=fro, dim=None, keepdim=F…

LabVIEW环境中等待FPGA模块初始化完成

这个程序使用的是LabVIEW环境中的FPGA模块和I/O模块初始化功能&#xff0c;主要实现等待FAM&#xff08;Field-Programmable Gate Array Module&#xff0c;FPGA模块&#xff09;的初始化完成&#xff0c;并处理初始化过程中的错误。让我们逐步分析各部分的功能&#xff1a; 1.…

电脑点击关机之后,又自动重启开机了。根本就关不了?

前言 有个小姐姐说&#xff0c;她家的电脑好生奇怪&#xff1a;点击【关机】按钮之后&#xff0c;电脑提示【正在关机】&#xff0c;过了几秒&#xff0c;电脑又自动开机了…… 好家伙&#xff01;也就是说关机和重启根本就没区别&#xff0c;电脑完全无法断电。 最后忍无可…

sqlite3的db.interrupt方法深入解析

在Node.js环境中&#xff0c;sqlite3库是一个广受欢迎的轻量级数据库库&#xff0c;它为开发者提供了一个简洁的API来与SQLite数据库进行交互。在处理长时间运行或复杂的数据库查询时&#xff0c;有时可能需要中断这些查询。sqlite3库提供了db.interrupt方法来实现这一功能。本…

主板选购2

现在市场上的主板种类繁多&#xff0c;功能各不相同&#xff0c;质量参差不齐。价格也不尽相同。所以选购主板时应该注意以下几点&#xff1a; 明确使用意图 根据自身需求针对性的选择主板。对于专业性很强的用户&#xff0c;整个电脑的配置就需要很高&#xff0c;CPU的规格也…

多线程篇(阻塞队列- BlockingQueue)(持续更新迭代)

目录 一、了解什么是阻塞队列之前&#xff0c;需要先知道队列 1. Queue&#xff08;接口&#xff09; 二、阻塞队列 1. 前言 2. 什么是阻塞队列 3. Java里面常见的阻塞队列 三、BlockingQueue&#xff08;接口&#xff09; 1. 前言 2. 简介 3. 特性 3.1. 队列类型 …

Springboot集成WebSocket客户端,发送消息并监测心跳

jar包&#xff08;主要jar包&#xff09; <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.5.7</version></dependency>服务类 import cn.hutool.json.JSONUtil; impor…