- 博客(75)
- 收藏
- 关注
原创 对链式队列的实现(C语言)
对链式队列的实现实现的具体过程:结构体定义和函数声明队列的初始化队列的尾插入取队首元素删除队首元素判断队列是否为空求队列元素的个数队列的销毁单元测试代码结构体定义内容和函数声明链式队列需要定义两个指针分别来表示队头和队尾,我们用head表示头指针tail表示尾指针,这是队列的结构体,而队列的节点也是一个结构体,其实和链表的结构体特别想象,一个数据data和一...
2018-03-17 17:00:16
1191
原创 C++入门小知识点(一)
C++是建立在C语言基础之上的一门面向对象的编程语言,所以要想学好C++必须先学好C语言,如果你觉得你不学C语言可以学好C++,可以试试,毕竟我没有尝试过。。。 咱们先来整理一下入门的认识与基本关于C++的知识: 1)认识C++。 2)C++与C语言相比有什么特点。 3)为什么C++支持重载,而C语言不行。 4)了解在C++中什么是函数缺省。 5)对于C...
2018-03-13 20:28:25
281
原创 数据结构中队列的实现(基于顺序表循环队列)
在学习数据结构中,队列也是一个重要的数据结构,我们今天来用基于顺序表的队列(Queue),在基于顺序表队列如果是不循环的顺序表,则在出队列时,时间复杂度是O(n),所以我们用循环队列来实现,怎么解释基于循环顺序表的队列呢?我们上图: 上图是在不循环顺序表中出队。这样不难看出时间复杂度不是很好。所以我们来顺序循环队列,把顺序表让它循环利用。看图上图就是顺序表循环队列,a就是队首,d就是队尾,...
2018-02-25 20:14:19
1556
原创 带头带环双向链表的实现及其相关操作。。
在前面博客中我们讲到关于线性表中的单链表,我们实现了不带头不带环的单项链表,在链表中不带头不带环的单链表是相对比其他链表要麻烦,且应用相对较少。那么今天我们来实现带头带环的双向链表,带头带环双向链表相应用比较多,应为它比较简介,相关的操作相对简单。 那么我们来看一下声明:#pragma once#include<stdio.h>#include<stdlib....
2018-02-10 18:55:23
199
原创 动态顺序表的实现和增删操作。
对与线性表中的顺序表,有静态顺序表,和动态顺序表。关于静态顺序表的实现以及一些操作,在本博客内有相关内容,那么就不过多介绍,动态顺序表基本与静态顺序表的一些操作一样,比如,查找,删除等,不一样的就是增加,销毁,最重要的静态顺序表是建立在栈上的,而动态顺序表是建立在堆上。 那么我们就在静态的基础上与动态结合加以练习,主要体现在增加,销毁,和结构体建立上不同。那么我们来看代码。先是头文件及其声明:#...
2018-02-08 15:36:31
496
原创 在学习中对于链表的实现。链表的增删查改等操作(C语言版)
大家都不陌生,一个程序员,语言是基础,数据结构是核心之一,因此,在学习过程中必须反复练习,那么今天我们来看看对与数据结构中,链表的实现。首先,我们要明确,在线性表中有两类,一是顺序表,分为动态顺序表和静态顺序表,我们前面有介绍静态,二是链表,链表又分为八种,即:1.不带头不带环单向链表。(学习)2.带头不带环单向链表。3.不带头带环单向链表。4.带头带环单向链表。5
2018-01-25 14:58:25
325
原创 对于结构体,联合体,枚举的总结。内存对齐及结构体大小问题,位段问题。
在c语言中,学习自定义类型,有数组,结构体,联合体,枚举。现在咱们来讨论一下后三者。结构体原型声明:struct tag{ member-list;}variable-list;这样对于大都数没学过结构体的人来说看起来不是很懂。那么咱们来具体的实例:struct stu //stu为结构体名{ char name[20]; //成员 int age; //成
2017-12-17 17:18:15
404
原创 数据结构中静态顺序表的实现和增删查改。。。
静态顺序表是把大小已经分配好,顺序表是利用数组,实现增删查改。首先我们要声明一个结构体,定义一个数组,它的总大小 ,还有一个用来计数它实际的大小。我们来看代码。先看头文件的声明:#pragma once#include#define sequence_table_max_length 100#define TYPECHAR char#define SHOWTYPE "%c"
2017-12-08 15:34:56
450
原创 将c文件注释进行转化的练习小项目
项目描述:利用c语言文件IO来实现c,c++源代码中注释内容的转换:c注释转换为C++风格注释。练习目的:c语言,函数,预处理,文件IO,状态机编程定位:巩固语法基础。适合初学。先看头文件#pragma onceenum//枚举{ NULLSET, CSET, CPPSET, EOFSET};#include#define INPUT "i
2017-12-02 19:17:19
354
原创 回调函数,qsort函数,与qsort函数的模拟
回调函数:回调函数就是一个通过函数指针调用的函数,如果你把函数的指针作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这个函数为回调函数,回调函数不是由该函数的实现方法直接调用,而是在特定的事件或者条件时由另外的一方调用,用于对该事件或者条件响应。简单的说,就是一个函数的参数里面有一个函数指针参数,而这个函数指针对应的函数要自己用函数实现。很通俗,具体用途,我们来
2017-12-01 13:17:00
404
原创 模拟memcpy和memmove函数,以及他们的区别。。
memcpy是无类型拷贝,也是一个返回值为void *类型的函数,接受的两个参数也是void *类型,还有一个参数是要拷贝的大小。具体函数怎么实现,看代码:void *my_memcpy(void *dest,const void *src,size_t count){ void *p = dest; assert(dest); assert(src); while(count-
2017-11-25 20:09:40
254
原创 什么是指针?关于指针的数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针的理解
对指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针的理解。。。。
2017-11-24 17:03:47
428
原创 库函数strstr的模拟。。
strstr函数是在一个字符串中查找子字符串第一次出现,返回子字符串第一次出现的首地址,没有查找到返回null。怎么理解呢?意思就是比如abcde和bcde两个字符串,查找到了就返回abcde中b的地址;来看具体代码:char *my_strstr(const char *string,const char *strCharSet ){ char *pat = (char *)st
2017-11-23 21:50:21
379
原创 库函数strcmp的实现
在c语言中,库函数strcmp是一个运用很频繁的函数,它的功能是比较两个字符串的大小,字符串怎么比较大小呢?其实是比较相同位置上字符的ASC码值的大小。举个例子:"abc"和"acb"两个字符串,比较大小,很显然是后者大,我们来分析一下:比较大小是以一个一个字符比较,a与a比较相同,再比较下一个,b与c比较很显然c的ASC码值要大,所以后者大。那么有人要问比较这里后面就不用比较
2017-11-23 20:38:33
1796
原创 模拟c语言strcat库函数。。
在c语言中处理有关字符串的函数有很多,比如strlen字符长度,strcpy字符串的拷贝,strstr在字符串中查找子字符串,strcat把一个字符串添加到另一个字符串后边,等等。。那么今天我们来模拟一下strcat库函数,自己模拟一下。首先strcat的用法:char *strcat( char *strDestination, const char *strSource);
2017-11-15 20:11:23
266
原创 用c语言编写求n的k次方函数,用迭代和递归两种方法
在c语言中求n的k次方函数。虽然c语言中库函数中已经存在,但是知道它的代码或者实现思想也是很必要的。那么我们用两种方式来实现:第一种:迭代法(效率在数据量比较大时要相比递归快一点)int power_ineration(int n,int k)//迭代{ int q = n; int p = k-1; if(k == 0) { return 1; } while(p--) { ...
2017-11-10 21:24:22
12047
2
原创 用递归的方法把一个无符号整数的每一位数字单独写出来,并且计算出每一位加起来的和。
这个题的具体含义是什么呢?例如:给出一个无符号整数:1234 一千两百三十四;然后变成:1 2 3 4;再把它们加起来:10;所以很简单的一道题,但是我们要用递归的思想写出来;所以代码如下:#include#includeint add_recursion(int input){ int n = 0; if(input<10) { r
2017-11-09 21:58:56
807
原创 求第n个斐波那契数,用迭代和递归两种方法。
什么叫斐波那契数呢?这个数是由来是意大利数学家,斐波那契在研究兔子问题得来的一个数学问题。具体形式是类似于这样一个数列1 1 2 3 5 8 13 21···;简单理解前面两个数加起来是后面数。所以求第n个数具体代码我们来看看:#include#includeint recursion(int input)//递归{ assert(input>0);
2017-11-08 21:28:36
1814
原创 运用字符串中位置的调换,比较一个旋转与另一个字符串是否相同。上篇博客的拓展。
对上一篇博客的拓展题。2.判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0. AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA AABCD右旋一个字符得到DAABC 对于这道题,咱们和上一篇代码原理大同小异。来看代码具体实现
2017-11-05 22:35:55
364
原创 在杨氏矩阵中判断是否有自己想要的数
杨氏矩阵一般来说都是n*n的矩阵,是从左到右,从上到下递增的。所以我们要判断是否存在自己想要的数呢?那么看看我自己写的一个小代码:#includeint search(int arr[3][3],int key,int size){ int i; for(i=0; i<size; i++) { if(arr[i][i] == key) { return 1;
2017-11-04 23:56:04
338
原创 用数据结构中的快速排序中Partion函数(交换法)的思想解题
今天遇到这样的一道题:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。 意思是给出的数组中把是奇数的数放在数组前面,而偶数放在后面。咱们先不多说,先看我写得代码:#include<stdio.h>void divide(int arr[],int size){ int i = 0; int temp =...
2017-11-04 23:43:17
584
原创 实现把一个无符号数的二进制位模式从左到右反转后输出。例如:在32位机器下,把25,0~011001变成100110~0
今天做了一道关于位运算的题。题目:实现把一个无符号数的二进制位模式从左到右反转后输出。例如:在32位机器下,25的二进制为0000 0000 0000 0000 0000 0000 0001 1001 变成1001 1000 0000 0000 0000 0000 0000 0000 即2550136832.我采用的是移位来得出结果,具体代码如下:#incl
2017-11-02 23:40:56
1644
原创 在c语言中宏和函数的区别
关于c语言中的宏,自己来总结一下。简单来说,宏就是在c语言中简单的文本替换,这是简单的理解,严格的说不是很准确,因为在宏中存在一个文本条件编译,所以有一定的判断,宏是在c语言中的预处理阶段就已经处理完成。函数呢,就要分为两种了。第一种封装成库。如果函数在动态库中,那么调用就是在函数运行阶段 。如果在静态库中,就在编译阶段就把相应的头文件copy一份到代码中,这样的代码的效率会有
2017-11-01 21:45:33
887
转载 【Linux入门学习之】vi/vim编辑器必知必会
一、我们为什么要学习vim编辑器?Linux的命令行界面下面有非常多的文本编辑器。比如经常听说的就有Emacs、pico、nano、joe与vim等。vim可以看做是vi的高级版。我们为什么一定要学习vim呢?有以下几个原因:(1)所有的Unix like系统都会内置vi文本编辑器,其他的文本编辑器则不一定会存在。(2)很多软件的编辑接口都会主动调用vi。(3)
2017-10-30 21:01:47
274
原创 strcpy库函数的实现。。strncpy库函数的实现
今天我在写完代码后,想起strcpy这个库函数,经过查阅,自己总结出来一点,也顺便再写一遍strcpyh函数,也是让自己练习练习。先来了解strcpy函数的功能,strcpy是将src地址(源)开始到'\0',包括'\0'的字符串拷贝到dst地址(目的)中去。来看具体代码 char *strcpy(char *dst,const char *src){ char *d = d...
2017-10-29 21:04:26
691
原创 冒泡排序
大家都在学习c语言数据结构都会接触一种基础的排序方法,冒泡排序!那么今天咱们就来看看c语言的冒泡排序!#includevoid bubble(int arr[],int size){ int i = 0; int j = 0; for(i=0; i<size-1; i++) { for(j=0; j<size-1-i; j++) { if(arr[j]>arr[j
2017-10-29 20:54:43
252
原创 扫雷小游戏c语言简单版
这个扫雷是我目前觉得比较好的小游戏小项目,用为在实现过程中,遇到过很多问题,对于一个初学者,是很好的练手小项目,自己从一步步分析,到逐步写代码,再修改代码中的bug ,一步一步的进步,一步一步的完善自己的代码,完成的后自己玩自己写的游戏感觉就是很好。下面就分享一下我的代码,也希望大家能指出不足。先是头文件及函数声明#ifndef __GAME_H__#define __GAME_H_
2017-10-28 23:58:42
810
原创 写个小小的三子棋程序!
在过去的一周自己埋头思考和学习,对于一个初学者,写一个小小的游戏还是比较有挑战的,所以我在过去一周里面,写了两个小游戏,一个三字棋(为什么是三子棋不是五子棋呢?这个~~水平不行啊!但是我相信我会的,但不是现在,嘿嘿~),还有一个就是扫雷,很经典的小游戏。在这里我先说说我的三字棋盘,扫雷看下一篇博客。人生中写的第一个与小小游戏,虽然很简单,没什么技术含量,但用来练习自己的基本编程语言的语法很
2017-10-28 23:09:46
635
原创 在C语言中操作符及用法
操作符是一个高级语言的基础,那么有些比较频繁的一些操作符大家可能都很熟悉,但对于不常见的操作符可能有时候也记不清楚,那么今天小编总结了一些c语言中的操作符,给大家分享,总结不足希望多多指导。。操作符有一下几种:1,赋值操作符 +=,-=,*=,/=,%=,>=,&=,|=,^=,=; 2,算数操作符 “+”,“-”,“*”,“/”;注意“%”
2017-10-19 16:23:56
1100
原创 数据结构中的折半查找,查找对象为有序数组。用getchar()在写出输入字母输出相应的大小写。
折半查找有序数组,用C语言实现。。运用函数调用。#include<stdio.h>int find(int arr[],int key,int size) // arr 需要排序的数组 key 查找的值 size 数组长度{ int left = 0; int right = size; int mid = 0; while(left<=right) // 当le...
2017-10-17 22:33:09
816
原创 产生随机数猜数字游戏。。。
玩猜数字游戏。。。给大家用C语言写一个小游戏。。随机数是以时间,生成的随机数。。#include#include#includeint main(){ int a = 0,c; int b; srand((unsigned)time(NULL)); b = rand()%10; do { printf("菜单\n"); printf("***********
2017-10-17 22:26:51
847
原创 关于对getchar一些小小的自学理解。。。
小编今天写了一个小程序关于getchar()。。题目:编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。 题目什么意思呢?意思就是让从键盘获取一段源代码判断代码中的大括号是否成对且相互匹配。那么先说说getchar() 自己总结的一下。getchar()最主要功能是从键盘上获取一个字符,但用法却很灵活也很有特点。比如一般要获取多个字符的时候与w
2017-10-15 12:58:50
402
原创 c语言中的问题与解决
在学习c语言中会有很多的问题,我把我学习中遇到的一些小问题给大家分享一下,如果遇到相同的问题希望能有帮助。 第一个问题,在c语言中定义一个变量,如果定义的变量是在运行的程序后边,就会出现【d:\c编程\day02\day02\huanwei.c(10) : error C2143: 语法错误 : 缺少“;”(在“类型”的前面)】举一个例子#includeint mai
2017-10-03 11:31:25
949
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅