-
多用户多级目录文件系统的实现
2015-09-16 09:22:402.文件物理结构可采用显式链接或其他方法。 3.磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。 4.文件目录结构采用多用户... -
计算机网络常见问题解答
2010-06-07 08:19:11包括不包括首部或尾部等开销在内? 问题4-34:如果一个路由器要同时连接在一个以太网和一个ATM网络上,需要有什么样的硬件加到路由器上? 问题4-35:教材中的图4-19的B类网络145.13.0.0在划分子网时,所给出的三个子... -
PowerDesigner 16.5破解版(附破解文件+汉化补丁+安装教程)
2018-11-07 17:24:33包含UML常见的所有的图形:类图、对象图、包图、用例图、时序图、协作图、交互图、活动图、状态图、组件图、复合结构图、部署图(配置图)。OOM 本质上是软件系统的一个静态的概念模型。 5. 业务程序模型 (BPM) ... -
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版
2013-02-03 11:42:5315.2.3 使用外部表加载不同的文件 622 15.2.4 多用户问题 623 15.2.5 外部表小结 624 15.3 平面文件卸载 624 15.4 数据泵卸载 631 15.5 小结 633 第16章 数据加密 634 16.1 加密类型 634 16.1.1 动态数据 ... -
电脑常见问题与故障1000例(高清PDF中文版)
2011-05-30 07:13:36303.软盘上的文件打不开 304.软驱灯长亮 305.挽救坏软盘中的数据 306.写软盘零磁道损坏 307.找不到扇区或是错误的扇区 308.软盘坏道导致读写错误 309.软盘不易取出 310.软驱显示上一张软盘的内容 311.显示“磁盘未... -
单向有头不循环链表
2018-09-22 23:09:39链表是一种常见的基础数据结构,是一种线性表,是一种物理存储单元上非连续、非顺序的存储结构。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括存储数据元素的数据域和...链表是一种常见的基础数据结构,是一种线性表,是一种物理存储单元上非连续、非顺序的存储结构。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括存储数据元素的数据域和存储下一个结点地址的指针域两个部分。 相比于线性表顺序结构,操作复杂。数据元素的逻辑顺序也是通过链表中的指针链接次序实现的。
给出头文件:
#ifndef __SLIST_H__ #define __SLIST_H__ #include <stdio.h> #include <assert.h> #include <stdlib.h> typedef int DataType; typedef struct Node { DataType data; //数据域 struct Node* next; //指针域 }Node; //节点的结构体 //打印 void SListPrint(Node *pFirst); // 初始化 void SListInit(Node **ppFirst); // 尾部插入 void SListPushBack(Node** ppFirst, DataType data); // 头部插入 void SListPushFront(Node **ppFirst, DataType data); // 尾部删除 void SListPopBack(Node **ppFirst); // 头部删除 void SListPopFront(Node **ppFirst); // 给定结点插入,插入到结点前 void SListInsert(Node **ppFirst, Node *pos, DataType data); // 给定结点删除 void SListErase(Node **ppFirst, Node *pos); // 按值删除,只删遇到的第一个 void SListRemove(Node **ppFirst, DataType data); // 按值删除,删除所有的 void SListRemoveAll(Node **ppFirst, DataType data); // 销毁 void SListDestroy(Node **ppFirst); // 按值查找,返回第一个找到的结点指针,如果没找到,返回 NULL int SListFind(Node *pFirst, DataType data); #endif __SLIST_H__
接下来就实现如上功能
#include "SList.h" void SListInit(Node **ppFirst) { assert(ppFirst); *ppFirst = NULL; } void SListPrint(Node *pFirst) { Node* cur = pFirst; while (cur != NULL) { printf("%d--->", cur->data); cur = cur->next; } printf("NULL\n"); } Node* NewNode(DataType data) { Node *node = (Node *)malloc(sizeof(Node)); node->data = data; node->next = NULL; return node; } //尾插 void SListPushBack(Node** ppFirst, DataType data) { Node *node = NewNode(data); assert(ppFirst != NULL); if (*ppFirst == NULL) { *ppFirst = node; return; } // 找链表中的最后一个结点 (链表中至少有一个结点) Node *cur = *ppFirst; while (cur->next != NULL) { cur = cur->next; } cur->next = node; } //头插 void SListPushFront(Node **ppFirst, DataType data) { assert(ppFirst != NULL); // 正常情况 Node *node = NewNode(data); node->next = *ppFirst; *ppFirst = node; } //尾删 void SListPopBack(Node **ppFirst) { assert(ppFirst != NULL); assert(*ppFirst != NULL); // 链表不是空链表 if ((*ppFirst)->next == NULL) { free(*ppFirst); *ppFirst = NULL; return; } // 链表中至少有两个结点,才能找倒数第二个 Node *cur = *ppFirst; while (cur->next->next != NULL) { cur = cur->next; } free(cur->next); cur->next = NULL; } //头删 void SListPopFront(Node **ppFirst) { assert(ppFirst != NULL); assert(*ppFirst != NULL); // 链表不是空链表 Node *first = *ppFirst; *ppFirst = (*ppFirst)->next; free(first); } // 给定结点插入,插入到结点前 void SListInsert(Node **ppFirst, Node *pos, DataType data) { if (*ppFirst == pos) { SListPushFront(ppFirst, data); return; } Node *newNode = NewNode(data); // *** 不要忘了申请空间 Node *cur; // 找到 pos 前的一个结点 for (cur = *ppFirst; cur->next != pos; cur = cur->next) {} // 改变的是字段内的值,而不是指针的值 cur->next = newNode; newNode->next = pos; } // 给定结点删除 (pos一定在链表中) void SListErase(Node **ppFirst, Node *pos) { if (*ppFirst == pos) { SListPopFront(ppFirst); return; } Node *cur = *ppFirst; while (cur->next != pos) { cur = cur->next; } cur->next = pos->next; free(pos); // 不要忘记释放结点 } // 按值删除,只删遇到的第一个 void SListRemove(Node **ppFirst, DataType data) { Node* node = NULL; Node* cur = NULL; node = *ppFirst; if (*ppFirst == NULL) { return; } else { while ((node->next)->data != data) { node = node->next; } cur = node->next; node->next = cur->next; free(cur); } } // 按值删除,删除所有的 void SListRemoveAll(Node **ppFirst, DataType data) { Node* node = NULL; Node* cur = NULL; node = *ppFirst; if (*ppFirst == NULL) { return; } else { while (node->next) { if ((node->next)->data == data) { cur = node->next; node->next = cur->next; free(cur); cur = NULL; } else { node = node->next; } } } } // 销毁 void SListDestroy(Node **ppFirst) { Node *cur, *next; for (cur = ppFirst; cur != NULL; cur = next) { next = cur->next; free(cur); cur = NULL; } } // 按值查找,返回第一个找到的结点指针,如果没找到,返回 NULL int SListFind(Node *pFirst, DataType data) { for (Node *cur = pFirst; cur != NULL; cur = cur->next) { if (cur->data == data) { return cur; } } return NULL; }
程序测试及结果如下:
#include "SList.h" void test() { Node* list = NULL;//初始化链表 Node* pos = NULL; printf("前插后:\n"); SListPushFront(&list, 1); SListPushFront(&list, 2); SListPushFront(&list, 3); SListPushFront(&list, 4); SListPushFront(&list, 5); SListPrint(list); printf("后插后:\n"); SListPushBack(&list, 1); SListPushBack(&list, 2); SListPushBack(&list, 3); SListPushBack(&list, 4); SListPushBack(&list, 5); SListPrint(list); printf("前删和后删:\n"); SListPopFront(&list); SListPopFront(&list); SListPopBack(&list); SListPopBack(&list); SListPrint(list); // printf("插入到指定位置:\n"); pos = SListFind(list, 2); SListInsert(&list, pos, 100); pos = SListFind(list, 3); SListInsert(&list, pos, 0); SListPrint(list); printf("删除指定位置:\n"); pos = SListFind(list,1); SListErase(&list,pos ); SListPrint(list); printf("按值删除,只删遇到的第一个:\n"); SListRemove(&list, 3); SListPrint(list); printf("按值删除,只删所有:\n"); SListRemoveAll(&list, 2); SListPrint(list); //printf("销毁链表!"); //SListDestory(&list); } int main() { test(); }
-
Oracle 9i & 10g编程艺术:深入数据库体系结构(09年度畅销榜TOP50)(08年度畅销榜TOP50)--详细书签版
2013-02-06 18:24:20包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并利用具体的例子来充分介绍每个特性,不仅讨论了各个特性是什么,还说明了它是如何工作的,如何使用这个特性来开发... -
网上会展的未来发展趋势
2012-12-12 16:21:10物理自然环境恶化是指网上会展信息系统物理基础的支持能力下降或消失,包括电力供应不足或中断、电压波动、静电或强磁场的影响,以及自然灾害的发生等。 2、网上会展的安全对策 会展网站信息网络安全防范包含以下... -
基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)
2011-03-12 10:44:33随着博客人数的增加, Blog 作为一种新的生活方式、新的工作方式、新的学习方式已经被越来越多的人所接受,并且在改变传统的网络和社会结构:网络信息不再是虚假不可验证的,交流和沟通更有明确的选择和方向性,单一... -
SQL Server 2008数据库设计与实现(关系数据库实现的通关宝典)--随书源代码
2013-02-06 12:04:009.1 数据库物理结构 383 9.1.1 文件与文件组 383 9.1.2 分区与页 386 9.1.3 页中的数据 388 9.1.4 分区 391 9.2 索引概览 393 9.3 基本索引结构 393 9.4 索引类型 395 9.4.1 聚集索引 395 9.4.2 非聚集... -
服务网关,对外暴露统一规范的接口和包装响应结果,包括各个子系统的交互接口、对外开放接口、开发加密接口、接口文档等服务,可在该模块支持验签、鉴权、路由、限流、监控、容错、日志等功能。示例图: zheng-cms...
-
超爽的自学课件(java)
2007-09-16 16:04:04为解决这个常见的程序设计问题,我们需要拥有一种能力,可在任何时间、任何地点创建任何数量的对象。本章的宗旨便是探讨在使用对象的同时用来容纳它们的一些Java工具:从简单的数组到复杂的集合(数据结构),如... -
从一个“普通”的Oracle DBA(Oracle数据库管理员)转变为Oracle Applications DBA(Oracle应用程序数据库...
2010-06-17 17:15:10在Oracle应用程序世界里,在中间层生成的文件能够,有时是需要放到数据库层。这些文件大多以文本文件的形式存在,包括配置信息。其他文件是与cloning相关的。 下面的图标有助于说明每层的主要组成部分。该图标来自... -
计算机二级C语言考试题预测
2010-06-08 18:29:34数据库系统中,数据的物理结构必须与逻辑结构一致 (10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108 A. 内模式 B. 外模式 C. 概念模式 D. 逻辑模式 (11) 算法的时间复杂度是指(C) A. ... -
最权威的C++教程_C++_Primer_Plus中文第五版+C++_Primer中文第四版(都含源码+习题)(共4分卷)分卷1
2010-06-23 17:33:55章讨论其他形式,包括数组(存储多个同类型的值)、结构(存储多个不同类型的值)、指针(标识内存位置) 。读者还将学习如何创建和存储文本字符串及如何使用C—风格字符数组和C抖string类来处理文本输入和 输出。最后,... -
Oracle DBA手记:数据库诊断案例与性能优化实践(一线Oracle DBA工作思考的心得,盖国强亲自策划)--详细书签...
2013-02-06 14:40:45本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及oracle典型错误的分析和诊断,各种sql优化方法(包括调整索引,处理表碎片,优化分页查询,改善... -
最权威的C++教程_C++_Primer_Plus中文第五版+C++_Primer中文第四版(都含源码+习题)(共4分卷)分卷2
2010-06-23 17:47:19章讨论其他形式,包括数组(存储多个同类型的值)、结构(存储多个不同类型的值)、指针(标识内存位置) 。读者还将学习如何创建和存储文本字符串及如何使用C—风格字符数组和C抖string类来处理文本输入和 输出。最后,... -
最权威的C++教程_C++_Primer_Plus中文第五版+C++_Primer中文第四版(都含源码+习题)(共4分卷)分卷3
2010-06-23 18:03:39章讨论其他形式,包括数组(存储多个同类型的值)、结构(存储多个不同类型的值)、指针(标识内存位置) 。读者还将学习如何创建和存储文本字符串及如何使用C—风格字符数组和C抖string类来处理文本输入和 输出。最后,... -
Loki :C++库的设计,包括常见的设计模式和习语的实现。 MiLi :只含头文件的小型C++库。 openFrameworks :开发C++工具包,用于创意性编码。 Qt :跨平台的应用程序和用户界面框架。 Reason :跨平台的框架,使...
-
二级C语言公共基础知识
2009-11-20 11:26:03数据库系统中,数据的物理结构必须与逻辑结构一致 (10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是______。(A) A. 内模式 B. 外模式 C. 概念模式 D. 逻辑模式 (11) 算法的时间复杂度是指______。(C... -
软件工程-理论与实践(许家珆)习题答案
2011-01-12 00:49:42分层的DFD图可以用于可行性分析阶段,描述系统的物理结构。(×) 9. 信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R 图。(√) 10. 用于需求分析的软件工具,应该能够保证需求的... -
SQLServer安全及性能优化
2012-03-07 20:49:25推荐一组合理的物理结构以降低工作负荷的开销。从而提高数据库的性能 数据库性能优化的常见问题 如何发现问题,如何分析导致性能降低的原因仍然是数据库管理员要掌握的知识。 事务占用资源的时间过长,造成阻塞 ... -
c51智能卡cos操作系统源代码-keil uv2
2018-11-09 21:49:04一般而言,一个具体的应用必然要对应于智能卡中的一个文件,因此,智能卡中的文件不存在通常所谓的文件共享的情况。而且,这种文件不仅在逻辑广必须是完整的,在物理组织上也都是连续的。此外,智能卡中的文件尽管也... -
深入解析Windows操作系统中文.part2.rar
2010-05-22 10:09:21解决常见的引导问题 281 5.3 停机 286 5.4 本章总结 288 第6章 进程、线程和作业 289 6.1 进程的内部机理 289 数据结构 289 内核变量 297 性能计数器 297 有关的函数 298 6.2 CreateProcess的流程 300 阶段1:打开... -
网管教程 从入门到精通软件篇.txt
2010-04-25 22:43:49ISO:根据ISD 9660有关CD-ROM文件系统标准列出CD-ROM上的文件 ISP:X-Internet签字文件 IST:数字跟踪设备文件 ISU:InstallShield卸装脚本 IT:脉冲跟踪系统音乐模块(MOD)文件 ITI:脉冲跟踪系统设备 ITS:... -
Oracle Database 11g数据库管理艺术--详细书签版
2012-09-30 01:09:45书中内容主要集中在大多数企业常见的问题之上,如安装和升级到oracle database 11g数据库软件、创建数据库、导出和导入数据、数据库的备份与恢复、性能调优,等等。 本书还提供了dba完成本职工作必备的基本的uniix... -
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串
2017-05-06 20:26:52oracle的框架主要由物理结构、逻辑结构、内存分配、后台进程、oracle例程、系统改变号 (System Change Number)组成 物理结构 物理结构包含三种数据文件: 1) 控制文件 2) 数据文件 3) 在线重做日志文件 ... -
Firebird数据库中文版
2011-11-29 08:48:43Firebrid在常见的平台上都可运行,如Linux和Windows(包括Windows终端服务器)其它支持的平台包括(MAC OS(苹果机), Solaris及HP-UX) 把数据库从一个平台转到另一个平台,非常的容易,只要备份数据库,然后,再... -
循序渐进Oracle:数据库管理、优化与备份恢复(第二版)--详细书签版
2013-02-06 15:46:38兼顾深度与广度,不仅对实际问题的现象、产生原因和相关的原理进行了深入浅出的讲解,更主要的是,结合实际应用环境,提供了一系列解决问题的思路和方法,包括详细的操作步骤,具有很强的实战性和可操作性。... -
[大数据-互联网大规模数据挖掘与分布式处理]完整中文扫描版.part2.rar
2015-11-07 09:48:332.1.1 计算节点的物理结构 2.1.2 大规模文件系统的结构 2.2 Map-Reduce 2.2.1 Map任务 2.2.2 分组和聚合 2.2.3 Reduce任务 2.2.4 组合器 2.2.5 Map-Reduce的执行细节 2.2.6 节点失效的处理 2.3 使用Map-...
收藏数
62
精华内容
24
-
Web前端开发笔记(1)
-
移动手机用户体验的三个层次
-
LVS + Keepalived 实现 MySQL 负载均衡与高可用
-
scrapy_pipelines.py
-
【Python-随到随学】FLask第二周
-
大数据技术之高频面试题01
-
PlutoniumEnergy:用于Factorio的Plutonium Energy mod-源码
-
华为1+X——网络系统建设与运维(中级)
-
Unity ILRuntime框架设计
-
access应用的3个开发实例
-
面向全球化的有效敏捷交付
-
SQLServer2005分区模板与实例
-
使用websocket实现php消息实时推送完整示例
-
智能停车场云平台(附vue+SpringBoot前后端项目源码)
-
phpstorm实现保存(ctrl+s)同时格式化代码的方法
-
2021 PHP租车系统 毕业设计 毕设源码 源代码使用教程
-
OpenCV-学习历程22-像素重映射(cv::remap)
-
两个栈实现队列
-
基于电商业务的全链路数据中台落地方案(全渠道、全环节、全流程)
-
LoadRunner设置检查点的几种方法介绍