![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言基础
文章平均质量分 75
jiangxt211
这个作者很懒,什么都没留下…
展开
-
图(五):最短路径
定义:在一幅加权有向图中,从顶点s到顶点t的最短路径是所有从s到t的路径中权重最小者。(单源最短路径、单终点最短路径、单对顶点最短路径、每对顶点最短路径)引理:最短路径的子路径是最短路径。当且仅当加权有向图中至少存在一条从s到v的有向图路径且所有从s到v的有向路径上的任意顶点都不存在于任何负权重环中时,s到v的最短路径才是存在的。松弛(relaxation)操作Bellman-Ford...原创 2020-03-06 21:51:46 · 477 阅读 · 0 评论 -
图(四):最小生成树
最小生成树即权值最小的生成树。(无环,连接所有顶点的图,一定是树,即生成树(spanning tree))GENERIC-MST在算法的每一步中,确定一条边(u, v),使得将它加入集合A后,A&{(u,v)}仍然是某一最小生成树的子集。称这样的边为A的安全边(safe edge)。算法的关键是如何寻找安全边。理解:cut、light edge、crosses、resp...原创 2020-03-05 11:48:19 · 696 阅读 · 0 评论 -
不相交集合
不相交集合(disjoint-set)一些应用涉及将n个不同的元素分成一组不相交的集合,常需要确定某元素所属集合及合并两集合。(例如,确定无向图的连通分量)1、不相交集合数据结构不相交集合数据结构(disjoint-setdatastructure)维护着一组不相交的动态集合S={S1,S2,S3,...,Sk}。我们用一个代表(representative)来标识每...原创 2014-08-10 23:12:13 · 1048 阅读 · 0 评论 -
字序与位序
1、字序对于跨越多字节的程序对象,我们需要建立两个规则:1)这个对象的地址是什么;2)在内存中如何排列这些字节。在几乎所有的机器中,多字节对象都被存储为连续的字节序列,对象的地址为所用字节中最小的地址。排列对象的中字节有两个通用规则:小端法(little endian)和大端法(big endian)。小端法即最低有效字节在最前面(低地址);大端法正好相反。That is, in a big en...原创 2017-07-10 22:49:17 · 1227 阅读 · 0 评论 -
C++静态库与动态库
C++静态库与动态库这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非转载 2017-06-05 20:02:38 · 231 阅读 · 0 评论 -
网络协议(三)Socket编程之UDP
UDP(User Datagram Protocol):用户数据报协议1)无连接;2)尽最大努力交付;3)面向报文。#include ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags,struct sockaddr *addr, socklen_t *addrlen);in原创 2017-02-28 21:56:09 · 630 阅读 · 0 评论 -
队列(双链表实现)
队列(queue)需要满足FIFO(First In First Out)的要求。在是使用双链表实现队列时,需要注意下面三种情况:1)队列为空;2)队列只有一个元素;3)队列有多个元素。进栈(Enqueue)出栈(Dequeue)#pragma once#ifndef _MY_QUEUE_H#define _MY_QUEUE_Htypedef struct node { struct n...原创 2017-03-15 14:27:32 · 628 阅读 · 0 评论 -
C的多态
使用链表来放不同类型的对象。#pragma once#ifndef _MY_TEST_H#define _MY_TEST_H#include "mylist.h"typedef void FunA(int iVal);typedef void FunB(char *pc);typedef struct nodea { struct nodea *pNext; int k原创 2017-03-05 17:39:55 · 296 阅读 · 0 评论 -
硬连接(hard link)和软连接(symbolic link)
stat - display file or file system statusstruct stat { mode_t st_mode; /* file type & mode (permissions) */ ino_t st_ino; /* i-node number (serial number) */ dev_t原创 2017-02-25 16:47:03 · 8518 阅读 · 0 评论 -
数组
C语言中的数组是一种将标量聚集成更大数据类型的方式。#include #include #include void PrintArray(int arr[], int n){ printf("array:\n"); for (int i = 0; i < n; i++) { // printf("%d\t", arr[i]); printf("%d\t",原创 2017-03-03 21:30:40 · 185 阅读 · 0 评论 -
查找算法
#include #include // 二分查找法int BinarySearch(int arr[], int n, int x){ int left = 0; int right = n - 1; int mid = 0; while (left <= right) { mid = (left + right) / 2; // mid = left + (righ原创 2017-03-01 17:50:38 · 189 阅读 · 0 评论 -
堆(heap)
1、堆(heap)堆数据结构是一种数组对象(也可以是链表),可以被看作一棵完全二叉树(二叉堆)。堆总是满足下列性质:1)堆中某个节点的值总是不大于或不小于其父节点的值;(在最大堆(max-heap)中,父节点的值不小于每一个子节点的值。在最小堆(min-heap)中,父节点的值不大于每一个子节点的值。)2)堆总是一棵完全二叉树。2、操作获取最大(最小)元素删除最大(最小)元素:下沉...原创 2014-08-25 21:24:23 · 505 阅读 · 0 评论 -
双链表(一)
双链表在链表这种数据结构中,各对象按线性顺序排序。数组的线性序是有数组的下标决定的,而链表中的顺序是由各对象中的指针所决定的。链表可以用来简单而灵活地表示动态集合。一个链表可以呈现为好几种形式。它可以是单链接的或双链接的,已排序的或未排序的,环形的或非环形的。双链表(a doubly linked list)的每一个元素都是一个对象。每个对象包含一个关键字域和两个指针域:next...原创 2014-06-16 16:53:24 · 601 阅读 · 0 评论 -
结构
C语言提供两种结合不同类型的对象来创建数据类型的机制:结构(structure),用关键字struct声明,将多个对象集合到一个单元中;联合(union),用关键字union声明,允许用几种不同的类型来引用一个对象。(1)结构(struct)结构就是一个或多个变量的集合,这些变量可以为不同的类型,为了处理方便而将这些变量组织在一个名字之下。关键字struct引入结构声明。结构声明由包含原创 2017-03-04 16:56:57 · 284 阅读 · 0 评论 -
编程珠玑番外篇-Q 协程的历史,现在和未来(转)
转自https://blog.youxu.info/2014/12/04/coroutine/编程珠玑番外篇-Q 协程的历史,现在和未来Comments本文原发于《程序员》2014年11月刊,发表时略有修改。 计算机科学是一门应用科学,几乎所有概念都是为了理解或解决实际问题而生的。协程 (Coroutine) 的出现也不例外。协程的概念,最早可以追溯到写作 COBOL 语言编译器中的技术难题。从磁...转载 2018-06-20 22:37:28 · 364 阅读 · 0 评论 -
双链表(二)
#ifndef _MY_HLIST_H#define _MY_HLIST_Htypedef struct hlist_node { struct hlist_node *next; /* next element */ struct hlist_node **pprev; /* address of previous next element */} HNODE;t...原创 2018-11-11 17:56:34 · 166 阅读 · 0 评论 -
散列表(hash table)
A hash table generalizes the simpler notion of an ordinary array. Directly addressing into an ordinary array makes effective use of our ability to examine anarbitrary position in an array in O(1)tim...原创 2018-11-11 21:33:24 · 291 阅读 · 0 评论 -
二叉查找树(二)
The search tree data structure supports many dynamic-set operations, including SEARCH, MINIMUM, MAXIMUM, PREDECESSOR, SUCCESSOR, INSERT, and DELETE. Thus, we can use a search tree both as a dictionary...原创 2018-11-25 23:00:44 · 170 阅读 · 0 评论 -
C预处理
预处理器执行宏替换、条件编译以及包含指定的文件。#include指令:用于在编译期间把置顶文件的内容包含进当前文件中;#define指令:用任意字符序列替换一个标记;1、文件包含#include指令是一个将所有声明放在一起的好方法,它保证所有的源文件都具有相同的定义与变量(函数)声明。如果某个包含文件的内容发生了变化,那么所以依赖于该包含文件的源文件都必须重新编译。#include ...原创 2019-02-17 11:56:51 · 581 阅读 · 0 评论 -
泛型链表
使用c语言实现泛型链表主要是将链表的操作与具体的对象进行隔离。即链表的操作,只对链结点进行,与具体的对象无关。用户可以通过链结点获取具体的对象,完成想要的操作。通过链结点获取对象有两种常用的方式:(1)通过链结点的位置计算出该对象的位置;(2)直接在链结点中包含该对象的位置(指针)。具体链表操作的实现可以参考:https://blog.csdn.net/jiangxt211/artic...原创 2019-09-15 11:05:07 · 304 阅读 · 0 评论 -
MyList
#include #include #include typedef struct ListNode { struct ListNode *pNext;} ListNodeSt;// 在链表尾部添加 ListNodeSt *AppendListNode(ListNodeSt *pStart, ListNodeSt *pNode){ ListNodeSt *pIter = pS原创 2016-05-18 01:02:30 · 503 阅读 · 0 评论 -
单链表
链表(Linkedlist)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存放到下一个节点的指针(Pointer)。使用链表结构可以克服数组需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。链表有很多种不同的类型:单向链表,双向...原创 2014-06-23 11:56:44 · 505 阅读 · 0 评论 -
C语言基础(一)
精通细节是理解更深和更基本概念的先决条件。有人说:“我理解了一般规则,不愿劳神去学习细节!”他们实际上是在自欺欺人。对于严谨的程序员来说,能够阅读和理解汇编代码仍是一项很重要的技能。通过阅读这些汇编代码,我们能够理解编译器的优化能力,并分析代码中隐含的低效率。在C语言程序中嵌入汇编代码的方法:1)整个函数都用汇编代码来写,然后在链接阶段与C语言函数结合起来;2)在C语言程序中直接利用GCC原创 2015-12-06 22:31:54 · 257 阅读 · 0 评论 -
C语言基础(二)
(二)数据传送指令1)mov S, DMOV 类中的指令将源操作数的值复制到目的操作数中。2)pushl Spushl %ebp 的行为等价于subl $4, %esp Decrement stack pointerMovl %ebp, %(esp) Store %ebp on stack3)popl Dpopl %e原创 2015-12-13 22:15:34 · 449 阅读 · 0 评论 -
c语言string源码
#ifndef _LINUX_STRING_H_#define _LINUX_STRING_H_/* We don't want strings.h stuff being used by user stuff by accident */#ifndef __KERNEL__#include #else#include /* for inline */#include /*原创 2015-04-12 21:46:21 · 1261 阅读 · 0 评论 -
代码1
#include #include #include #include #include #include "mystack.h"#define MAX_LINE 256#define ARRAY_SIZE 32//======================================================// 去掉单词间多余的空格//===========原创 2014-11-13 21:05:34 · 421 阅读 · 0 评论 -
数据的表示
1、关于进制十进制01234567八进制01234567十六进制01234原创 2014-10-18 23:51:28 · 678 阅读 · 0 评论 -
C语言scanf函数详细解释
C语言scanf函数详细解释转载 2014-09-10 22:47:16 · 1080 阅读 · 0 评论 -
ping实现
转自:http://www.cnblogs.com/luxiaoxun/archive/2012/10/17/2728607.html// Description:// This sample illustrates how an ICMP ping app can be written// using the SOCK_RAW socket type and IPPROT转载 2016-07-10 23:28:01 · 497 阅读 · 0 评论 -
shell(1)
#!/bin/bashcd test# get current time L_TIME=$(date +%4Y%m%d)echo "current time: $L_TIME"lmonth=$(expr substr $L_TIME 5 2)echo "lmonth: $lmonth"L_MONTH=$(date +%m)#lday=$(substr $L_TIME 7原创 2016-09-17 00:09:09 · 209 阅读 · 0 评论 -
排序算法
两个数的交换void swap(int arr[], int i, int j){int tmp;tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;}// 当交换的两个数相等或与自身交换时,下面两种实现不能用void swap(int arr[], int i, int j){arr[i] ^= arr[j];arr原创 2017-03-01 16:27:53 · 208 阅读 · 0 评论 -
C语言关键字
1.volatile关键字一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1). 并行设备的硬件寄存器(如:状态寄存器)2). 一个中断服务子程序中会访问到的非自动变量(Non-原创 2015-11-15 22:33:59 · 337 阅读 · 0 评论 -
网络协议(二)Socket编程之TCP
TCP(Transmission Control Protocol):传输控制协议。1)面向连接的运输层协议,点对点连接;2)提供可靠交付;3)提供全双工通信;4)面向字节流。TCP连接的建立和终止1、TCP连接的建立1)服务器必须准备好接受外来的连接。由socket、bind和listen来完成被动打开(passive open)。2)客户通过调用connect发原创 2017-02-28 21:08:07 · 318 阅读 · 0 评论 -
网络协议(一)
原创 2016-08-03 21:10:26 · 305 阅读 · 0 评论 -
线程
主要内容来自apue及网络Consistency Synchronization Race Deadlock线程(thread)是“进程”中某个单一顺序的控制流。也被称为轻量进程(lightweight processes)。线程是操作系统能够进行运算调度的最小单位。死锁(deadlock):是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作原创 2017-02-27 15:51:47 · 264 阅读 · 0 评论 -
servr
/* * tiny.c - A simple, iterative HTTP/1.0 Web server that uses the * GET method to serve static and dynamic content. */#include "csapp.h"void doit(int fd);void read_requesthdrs(rio_t *rp);int原创 2016-09-22 00:05:39 · 1251 阅读 · 0 评论 -
webserver
web基础Web客户端和服务器之间的交互用地是一个基于文本的应用级协议,HTTP(Hypertext Transfer Protocol, 超文本传输协议)。对于Web客户端和服务器而言,内容是与一个MIME(Multipurpose Internet Mail Extensions,多用途的网际邮件扩充协议)类型相关的字节序列。text/htmlimage/gifWe原创 2016-05-18 00:59:03 · 431 阅读 · 0 评论 -
HTTP协议
1 HTTP Message1.1 Message TypesHTTP messages consist of requests from client to server and responses from serverto client.HTTP-message= Request | Response; HTTP/1.1 messagesRequest and Res原创 2016-09-04 23:23:34 · 311 阅读 · 0 评论 -
PCLint使用介绍
option.lnt文件内容如下://-e720 // allow direct test of assignment//-e502 -e713 -e737 -eau // don't report on signed/unsigned mismatches//-e734 // allow sub-integer loss of information//-e701 -e703 /转载 2014-09-22 23:09:54 · 1747 阅读 · 0 评论