
C语言
xinger_28
努力任何时候都不会迟
展开
-
C语言 字节对齐
你是否有观察过结构体中数据变量所占的字节数,以及结构体所占的字节数?如: 图1 图2 图三你是否知道图1,2,3中结构体所占的字节数么?在此之前,我们需...原创 2018-11-03 22:46:38 · 157 阅读 · 0 评论 -
C语言实现通讯录
//.实现一个通讯录;//通讯录可以用来存储1000个人的信息,每个人的信息包括://姓名、性别、年龄、电话、住址////提供方法://1. 添加联系人信息//2. 删除指定联系人信息//3. 查找指定联系人信息//4. 修改指定联系人信息//5. 显示所有联系人信息//6. 清空所有联系人//7. 以名字排序所有联系人下面是代码:(在后缀为.c文件前提下)#inc...原创 2018-08-31 12:05:57 · 222 阅读 · 0 评论 -
将两个有序链表合并为一个有序链表
头文件(“链表.h”)#pragma once#include<stdio.h>#include<stdlib.h>#include<Windows.h>typedef struct ListNode{ struct ListNode *next; int data;}ListNode;//初始化void Init(Lis...原创 2018-09-07 15:46:55 · 3162 阅读 · 0 评论 -
反转/逆置单链表
其中ListNode*pp为传入的参数://反转单链表ListNode*Reverse(ListNode*pp){ if (pp == NULL || pp->next == NULL) { return pp; } ListNode*p1 = pp; ListNode*p2 = pp->next; ListNod...原创 2018-09-07 17:03:28 · 147 阅读 · 0 评论 -
约瑟夫环程序代码
“约瑟夫环.h”#pragma once#include<stdio.h>#include<stdlib.h>#include<Windows.h>#include<assert.h> //共有的个数#define A 40 //A个一旋转struct List{ struct List * next; ...原创 2018-09-12 12:52:25 · 840 阅读 · 0 评论 -
出栈入栈合法性检验
“栈.h”#include<stdio.h>#include<stdlib.h>#define A 40typedef int Datatype;typedef struct Stack{ Datatype stack_array[A]; int top; int bottom;}Stack;//栈的初始化Stack InitS...原创 2018-09-12 12:54:08 · 407 阅读 · 1 评论 -
用一组数建立小堆(堆的创建)
(二叉)堆的概念:如果有一组数,数的集合K={K0,K1,.....Kn-1},把它的所有元素按照完全二叉树的顺序存储方式存储在一个一维数组中,并且有Ki<=2*Ki+1,Ki<=2*Ki+2,(或者Ki>=2*Ki+1,Ki>=2*Ki+2),称为小(大)堆。如上图所示:小(大)堆中,任一关键码均小于(大于)等于它的左右孩子的关键码,位于堆顶顶点的关键码最...原创 2018-10-02 16:45:17 · 8483 阅读 · 0 评论 -
堆的插入与删除
在上一篇博客中,我详细探讨了堆的创建与调整,这一篇基于上一篇(https://blog.youkuaiyun.com/xinger_28/article/details/82926744)的基础上讨论堆的插入与删除。首先声明此堆为小堆。小堆与大堆代码相似,原理相似小堆的插入:在已经建成的最小堆的后面插入要插入的新元素,插入之后,当节点不满足小堆的性质时,对对重新进行向下调整。(关于为何用新元素插入...原创 2018-10-02 17:57:25 · 237 阅读 · 0 评论 -
搜索二叉树的创建
二叉搜索树的性质:1)若它的左子树不为空,则左子树上所有节点都小于根节点的值。2)若它的右子树不为空,则右子树上所有节点都大于根节点的值。3)它的左右子树也分别为二叉搜索树。二叉搜索树如下图:二叉搜索树的创建过程:先找到需要插入值得父节点,比较父节点与插入值得大小,确定插入的位置。(找父节点,需要通过根节点与插入值得大小进行比较,确定根节点的左右孩子位置,继续循环,...原创 2018-10-04 23:30:05 · 7654 阅读 · 0 评论 -
搜索二叉树的创建,插入,查找,删除
二叉搜索树,顾名思义,主要作用为搜索,确定该树中是否存在要搜索的数据。基于找到该数据衍生除了对搜索二叉树的一系列操作,比如插入新数据,删除旧数据等等。搜索二叉树的性质(设节点为Root)1)root的左孩子的值永远小于root的值2)root的右孩子的值永远大于root的值3)root的左右子树依旧遵循此性质特点:搜索二叉树不允许一棵树中出现两个相同的数据,(个人看来,为了减少...原创 2018-10-05 11:30:18 · 983 阅读 · 0 评论 -
二叉树的一些操作
头文件树.h#pragma once#include<stdio.h>#include<stdlib.h>#include<Windows.h>#include<string.h>#include<assert.h>#include<math.h>typedef char Datatype;typ...原创 2018-07-21 16:41:16 · 163 阅读 · 0 评论 -
模拟实现strcpy
模拟实现strcpy#include<stdio.h>#include<Windows.h>#include<assert.h>char *my_strcpy(char q[], char *p){assert(q);assert(p);char *s = q;while (*q++ = *p++);*q = '\0';return s;...原创 2018-05-22 23:27:29 · 89 阅读 · 0 评论 -
模拟实现strncmp
#include<stdio.h>#include<Windows.h>#include<assert.h>#include<string.h>int my_strncmp(char *p, char *q, int n){int flag = 0;while (n-- > 0){if ((*p - *q) > 0)r...原创 2018-05-22 23:17:02 · 115 阅读 · 0 评论 -
一维数组及其二维数组的表示
数组:存储相同数据类型的集合一维数组:是指由相同数据类型的数据 经过 在同一方向 有序排列,一维数组 结构单一,但却是二维数组、多维数组的集合二维数组:一维数组的叠加,将一维数组看做是一个 “数据”,则将多个数据 依照一位数组 在 另一方向上有序排列。n维数组:(n-1)维数组的叠加,叠加方式参照 二维数组 由 一维数组 叠加。注:(1)数据从 低地址 向 高地址 移动, 即 ...原创 2018-11-03 12:12:49 · 2484 阅读 · 0 评论 -
给定一个 32 位有符号整数,将整数中的数字进行反转。
示例:例如:给定数“456”,需返回“654”,给定“-876”,则需返回“-678”注意:假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。解答: 看到题意,我们知道:(1)注意 X 的 正负 ,(若为 负数 ,为了防止做除法时(向下取整),取其绝对值 ,)用一个数 记录 X的状态...原创 2018-11-02 17:25:43 · 3398 阅读 · 0 评论 -
出栈,入栈的合法性检验
元素出栈、入栈的合法性检验:方法步骤:1)入栈顺序用数组aa存储,出栈顺序用数组bb存储2)检验*aa==*bb是否满足,若满足,aa++,bb++;{否则,检验栈顶元素与*bb是否相等,若相等,出栈,bb++;否则,入栈},3)一直循环2),直到数组aa和数组bb全部走完,结束(栈中元素也要出完!) 头文件:栈.h#pragma once#include<st...原创 2018-10-07 23:00:15 · 414 阅读 · 0 评论 -
C语言 ,单链表实现队列(初始化,入队,出队,元素个数,队首元素,是否为空)
单链表实现队列:链表为空的判断条件:pQueue->pFront==pQueue->pRear或者若结构体中存在数的个数时,判断pQueue->size==0,即元素个数为0头文件:队列.h#pragma once#include<stdio.h>#include<stdlib.h>//利用单链表实现队列//函数接口 :type...原创 2018-10-07 15:32:50 · 1938 阅读 · 0 评论 -
C语言,压栈,出栈,返回栈顶元素,栈的个数等等栈的一系列操作
头文件:栈.h#pragma once#include<stdio.h>#include<stdlib.h>#include<Windows.h>//函数接口:typedef int SDataType;typedef struct Stack { SDataType array[100]; int top;} Stack...原创 2018-10-07 11:30:23 · 4250 阅读 · 0 评论 -
通过换地址改变两个数的值。
通过改变地址,交换两个数的值。#include<stdio.h>int main(){int m=0,n=8;scanf("%d%d",&m,&n); int* c = &n; int* d = &m; c=&m; d=&n; printf("%d\n%d", m, n); return 0;}...原创 2018-03-12 22:39:52 · 365 阅读 · 0 评论 -
如何用代码画出菱形?
我们都知道菱形很好看,那么怎么用代码C语言画出菱形呢?那么就看下面的程序吧!这个是我自己写的代码,因为是初次接触这些,如果写的不好,还请指教#include<stdio.h>#define _CRT_SECURE_NO_WARNINGS 1int main(){int m = 0;int j = 1;int n = 1;int t=1;printf("请输入菱形的长...原创 2018-03-14 18:52:43 · 4392 阅读 · 0 评论 -
模拟实现strncpy
#include<stdio.h>#include<Windows.h>#include<assert.h>#include<string.h>char* my_strncpy(char *p, char *str,int n){assert(*p);assert(*str);int i = 0;char *s = p;while...原创 2018-05-22 23:13:43 · 166 阅读 · 0 评论 -
模拟实现strncat
#include<stdio.h>#include<Windows.h>#include<string.h>#include<assert.h> char *my_strncat(char *p, char *str, int n){assert(*str);assert(*p);char *s = p;while (*p+...原创 2018-05-22 23:15:27 · 109 阅读 · 0 评论 -
一个简单的英语到汉语的翻译过程(搜索二叉树)
英语到汉语的翻译:原理:在我看来,既可以运用数组,也可以运用搜索二叉树,或者是其它任意一种存储结构应该都可以完成这个操作,但应用搜索二叉树,效率会更高,因为每一次搜索,就会排除许多无用的数据。 例如,在上图中查找1,只需要通过上图的3次比较就可以得出结果,每一次排除了多种无效数据。方法步骤:1)应用到搜索二叉树的每个节点,节点信息包括英文,汉语,左孩子,右孩子。2)建...原创 2018-10-07 10:42:57 · 808 阅读 · 0 评论