继续复习链表知识点,本章包含单链表的增加,删除,判断是否为空,和链表长度,以及链表的排序 几个知识点

1.链表的判断是否为空

//1.判断链表是否为空

bool isempty_list(PNODE pHead) {

return pHead->pNext == NULL;

}

2. 计算链表的长度

//2.链表长度

int length_list(PNODE pHead) {

PNODE pFirst = pHead->pNext;//获取头结点

int num = 0;

while (pFirst != NULL)

{

num++;

pFirst = pFirst->pNext;

}

return num;

}

3. 在制定位置增加节点

//指索引位置插入节点

bool insert_list(PNODE pHead, int pos, int data) {

PNODE p = pHead;//头结点

int i = 0;

while (p != NULL&&i <= pos)

{

p = p->pNext;

i++;

}

//pos 是索引位置,循环i不能>pos+1

if (p == NULL || i > (pos + 1))

{

return false;

}

PNODE pNew = (PNODE)malloc(sizeof(PNODE));

if (NULL == pNew)

{

printf("内存分配失败");

exit(-1);

}

pNew->data = data;

pNew->pNext = p->pNext;

int pVal = p->data;

p->pNext = pNew;

return true;

}

4. 在指定位置删除节点

bool delete_list(PNODE pHead, int pos) {

PNODE p = pHead->pNext;

int i = 0;

//这样循环为了获取pos 前面一个节点

while (NULL != p&&i < pos - 1)

{

p = p->pNext;

i++;

}

if (NULL == p || i > pos - 1)

{

return false;

}

PNODE q = p->pNext;

p->pNext = p->pNext->pNext;

free(q);

q = NULL;

return true;

}

5.节点的排序

//排序算法

void sort_list(PNODE pHead) {

int len = length_list(pHead);

PNODE p, q;

int i, j, temp;

for (i = 0, p = pHead->pNext; i < len - 1; i++, p = p->pNext)

{

for (j = i + 1, q = p->pNext; j < len; j++, q = q->pNext)

{

if (p->data > q->data)

{

temp = p->data;

p->data = q->data;

q->data = temp;

}

}

}

return;

}

6. 测试代码

void main(void) {

PNODE pHead = create_list();

if (isempty_list(pHead)) {

printf("链表为空\n");

}

else {

printf("链表不为空\n");

}

bool is_insert=insert_list(pHead, 2, 100);

if (is_insert)

{

printf("链表在索引2出插入100 成功\n");

show_list(pHead);

}

else {

printf("链表在索引2出插入100 失败\n");

}

printf("删除节点索引:1\n");

bool is_del=delete_list(pHead, 1);

if (is_del)

{

printf("删除节点索引:1 成功\n");

show_list(pHead);

}

else {

printf("删除节点索引:1 失败\n");

}

}

c语言单链表超市出库,c语言-单链表(二)相关推荐

  1. Oracle EBS 销售订单发运后连接行程停靠站请求报错导致物料未出库,但单销售行已关闭并进入开票接口

    Oracle EBS 销售订单发运后连接行程停靠站请求报错导致物料未出库,但单销售行已关闭并进入开票接口 在开发销售订单发运的程序时碰到如图所示的错误: 在分析一波可能出现的问题后定位到销售订单类型中 ...

  2. U811.1接口EAI系列之五--材料出库--VB语言

    主要业务有:09其他出库单 11:材料出库单 32:销售出库单 主要业务代码: '材料出库生成XML Public Function xml_storeout(ds_head As MSHFlexGr ...

  3. 金蝶云星空与奇门WMS-A对接集成盘亏单查询打通出库单创建

    金蝶云星空与奇门WMS-A对接集成盘亏单查询打通出库单创建 来源系统:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式:通过标准的业务架构:多会计准则.多币别 ...

  4. 旺店通·企业版与畅捷通T+对接集成查询销售出库单连通创建销售出库单(WT+销售出库单)

    对接源平台:旺店通·企业版 慧策最先以旺店通ERP切入商家核心管理痛点--订单管理,之后围绕电商经营管理中的核心管理诉求,先后布局流量获取.会员管理.仓库管理等其他重要经营模块.慧策的产品线从旺店通E ...

  5. C语言 单链表查找出倒数第,查找单链表倒数第k个元素

    查找单链表倒数第m个结点,要求时间复杂度为O(n).(提示,使用双指针) 解题思路: 常规思路为先获取链表的长度N,然后返回N-k+1位置处的结点即可.但是中需要遍历两次链表. 我们使用另一种算法,设 ...

  6. 金蝶云星空与赛意SMOM对接集成委外补料查询连通保存发运单数据(K-S出库单同步-委外补料单-测试通过)

    数据源平台:金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台.金蝶K/3Cloud围绕着"生态.人人.体验&qu ...

  7. c语言实验报告超市购物系统,C语言超市购物管理系统的报告.doc

    第 PAGE 14 页 共 15 页 TOC \t "标题 2,1,样式2,2,样式3,3" \h 3033 1题目描述 1 760 2 系统分析 1 119 2.1 题目要求 1 ...

  8. 打印表单_超市生鲜日常作业表单,打印出来就能用!

    零售商要在日趋激烈的市场竞争中生存.发展,必须要树立低价格形象.加强吸引客流的能力并不断增强顾客的忠诚度.低价格形象是一种市场营销策略,是零售商吸引顾客的主要手段. 显然蔬菜.水果作为顾客的目标性购买 ...

  9. c语言顺序选择结构题库,C语言复习题顺序结构

    C语言复习题顺序结构 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档所得收入( ...

最新文章

  1. 内蒙古公安原创扫黑除恶主题MV《以警之名》全国首发
  2. 字符串处理函数C语言实现(一)
  3. Delphi的彩蛋 (好像Delphi5~Delphi7都可以)
  4. VMware Workstation 9下基于Ubuntu 12.10服务器版本的Hadoop集群的配置
  5. apple个人开发者证书无线发布app的实现(转)
  6. SparkStreaming和Storm的区别
  7. java学习笔记(三)----成员权限,构造函数,this用法
  8. Git #1 - 安装git bash
  9. MD5工具类 加盐加密 及编码
  10. Oracle SQL 精妙SQL语句讲解
  11. paip. JAVA快速开发IDE与JSF技术
  12. 一图看完双11阿里云原生技术亮点
  13. NETDOM的几个用法
  14. cs231n作业一 knn
  15. hadoop+hbase安装
  16. 八数码 (Astar)
  17. 开发低功耗蓝牙4.0血压计连接与收发数据
  18. 【Cesium】点击billboard弹出自定义气泡框
  19. 汇编指令rep stosq
  20. php64转码,Base64的编码转换方式

热门文章

  1. CentOS7升级openssh8.0及升级后无法root登陆处理
  2. es6 数组合并_那些会用到的 ES6 精粹(包邮送书)
  3. python中event的用法_Python编程之event对象的用法实例分析
  4. Java线程更新ui_android使用多线程更新ui示例分享
  5. post get mysql_jQuery – AJAX get() 和 post() 方法 | 菜鸟教程
  6. C#之正则表达式、异常处理和委托与事件
  7. 从零开始学习ASP.NET MVC 入门
  8. 【翻译】如何获取正在运行的StreamInsight实例版本号?
  9. 微软提出第一个端到端的Video Captioning方法:SWIN BERT,涨点显著!
  10. Fastformer:简单又好用的Transformer变体!清华MSRA开源线性复杂度的Fastformer!