c
OnexTwo
君志所向,一往无前,愈挫愈勇,再接再厉。
展开
-
计算机中的数(二)之原码、补码、反码及其转换
原码原码是机器数中最简单的一种表示形式,符号位为0表示正数,符号位为1表示负数,数值位即是真值的绝对值,故原码又称为带符号的绝对值表示。譬如101的原码是0,101。我们用逗号","","","作为符号位和数值部分的分隔符。原码正数定义[X]原={0,x2n>x≥02n−x,0≥x>−2n [X]_原=\begin{cases} 0,x \quad 2^n>x\ge...原创 2020-01-04 15:57:33 · 1107 阅读 · 0 评论 -
计算机中的数之一 无符号数与有符号数
引言 学过C语言的,都知道 C语言中有有符号数和无符号数。用int举例子也就是 int a;是定义了一个有符号数,而unsigned int a;是定义了一个无符号数。正文 我们按32位编译器来举例子,int变量是4个字节。也就是32位二进制数。 那么如果是无符号数,那么根据16位二进制数可以表示2^32个状态也就是 0~2^32-1这样的范围。(也就是0~4294967...原创 2020-01-04 13:04:45 · 745 阅读 · 0 评论 -
排序算法之快速排序
最近复习了排序算法。仅在此略加笔记,以备后需。来日有时,再详细说明。#include <stdio.h>int partition(int L[],int low ,int high);int quickSort(int L[],int low ,int high);int main(void){ int L[18]={0,5,3,6,0,8,1,4,2,45,23,1...原创 2019-09-19 21:23:57 · 109 阅读 · 0 评论 -
后序非递归法遍历二叉树
理解的关键在于,建立栈,前序遍历第一次遇到就排出,中序遍历第二次遇到排出,后序遍历第三遇到排出,用c时注意指针的使用。具体思想:一直沿着左支树走到底,并且将经过的节点压入栈,到底时,拿出栈顶元素,判断一下子,是第几次遇到它,如果是第三次就排出,并且把遍历指针设为NULL,否则就取其右孩子继续这个操作。以下是我从c开始实现的栈,树,等结构及其基本操作。然后在此基础上实现这个算...原创 2019-05-26 19:01:01 · 299 阅读 · 0 评论 -
单链表逆转的2种方法。
单链表逆转方法有很多:这里谈两种:1.再建一个链表然后,边遍历原来的链表,便是用头插法,完成新的单链表,这样子虽然内存损耗比较大,但是也是勉强可以完成的。2.使用3个指针,逐个节点的逆转。p q两个指针分别指向想要逆转关系的两个节点,p指向前一个节点,q指向后一个节点r指向q后余下的链表。具体操作:这里我们忽略头节点,也是说连带头节点一起逆转。初始化操作:p...原创 2019-03-23 16:02:15 · 10709 阅读 · 1 评论 -
leetcode 5. 最长回文子串
写这道题的时候,起初没有想法的。后来经过左思右想,想到了中心扩展的方法,结果只出来一种单中心的最长回文子串,然后又发现双中心没法在这样的方法里完成。苦恼了许久,看了答案的java代码恍然大悟,只要再写一种双中心的,比较单中心和双中心哪个长就好了。答案的java代码觉得写的很好值得学习。我自己写的是C的代码,附上经过修改的成功AC的C源码。int expandAroundCente...原创 2019-03-16 15:25:57 · 123 阅读 · 0 评论 -
leetcode -4寻找两个有序数组的中位数
#include <stdio.h>#include <stdlib.h>int Insert(int *num,int n,int *size1){ int i,j; for(i=0;i<*size1;i++){ printf("%d\n",num[i]); if(n<=num[i]){ ...原创 2019-03-08 14:17:41 · 147 阅读 · 0 评论 -
leetCode 两数之和 自己的写法
int* twoSum(int* nums, int numsSize, int target) { int i,j; static int returnNums[2]; for(i=0;i<numsSize-1;++i) { for(j=i+1;j<numsSize;++j) { if(nums[...原创 2019-02-23 19:53:04 · 236 阅读 · 0 评论 -
leetCode 两数相加 C语言 自己的写法
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */typedef struct ListNode ListNode;typedef struct ListNode* LinkList;struct Lis...原创 2019-02-23 19:42:28 · 431 阅读 · 0 评论 -
KMP算法详解(易理解)
前言:断断续续得学习KMP算法已经有些时间,每次看这个算法都会有更进一步得理解。至今,总算对整个KMP算法有了个完整的理解。简单模式匹配算法:KMP算法的产生是源于字符串模式匹配问题的。因为原始的朴素模式匹配算法太过粗糙,效率低所以才有科学家发明了KMP算法的。朴素的模式匹配算法流程:将模式的首位与主串首位比较如果相等则比较下一位,否则主串往后跳一位重新执行前面的操作。直到主串跳完或者模式...原创 2018-12-09 21:56:50 · 269 阅读 · 0 评论 -
八皇后问题---自己的想法
#include <stdio.h>int ceng=0;int number=0;int zong=0;typedef struct zuobiao{ int x; int y;};zuobiao b[5];int fun(int x,int y);int main(void){/*printf("(1,1)的搜索\n") ;fun(1,1);print...原创 2018-10-28 11:56:17 · 207 阅读 · 0 评论 -
数据结构 栈的实现 c语言
//栈的实现c语言#include <stdio.h>#include <stdlib.h>#define LISTSIZE 100#define LISTCREMENT 10#define OK 1#define ERROR 0typedef struct stack{ int *base; int *top; int stack_size;}st...原创 2018-09-11 19:52:27 · 200 阅读 · 0 评论 -
数据结构学习备忘录(持续更新)
概念性问题:①在链表中引入头结点可以使头指针永远不空。方便插入和删除运算的实现。②线性表采用链式存储时,结点和结点内部的存储空间必须是连续的。 有价值的代码:高效删除顺序表中值为e的所有元素的代码;void del(Sqlist *L,ElemType e){int i,k;i=0;while(i<L->length){if(L->...原创 2018-09-11 18:39:03 · 291 阅读 · 0 评论 -
贪吃蛇源代码
#include <stdio.h>#include <stdlib.h>#include <time.h>#include <windows.h>#include <conio.h> int x[50]={1,1,1,1};//初始蛇坐标 x int y[50]={1,1,1,1};//初始蛇坐标 y int n=3;int t=0;i...原创 2018-04-24 18:32:25 · 6051 阅读 · 0 评论