C
shuangshuang37278752
这个作者很懒,什么都没留下…
展开
-
union小问题
#include union{ int i; char x[2];}a; int main(){ a.x[0]=10; a.x[1]=1; printf("%d \n", a.i); }C语言中的union是联合体,里面不同类型的元素共享同一块内存,也就是数组x[2]和整数i共享同一个内存,其中char类型占1个字节,int类型占4个字原创 2013-06-05 10:19:23 · 673 阅读 · 0 评论 -
排序算法之选择排序
选择排序算法思想:每一趟在n-i+1(i = 1,2,···,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录#include void select_sort(int a[],int n){ int i,j,minindex,t; for(i=0;i<n-1;i++) { minindex = i; for(j=i+1;j<n;j++)原创 2013-09-22 21:10:58 · 635 阅读 · 0 评论 -
排序算法之插入排序
1.直接插入排序算法算法描述:一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序取出下一个元素,在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于新元素,将该元素移到下一位置重复步骤3,直到找到已排序的元素小于或者等于新元素的位置将新元素插入到该位置后重复步骤2~5#include void i原创 2013-09-22 20:13:22 · 812 阅读 · 0 评论 -
排序算法之快速排序
1、算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。(1)分治法的基本思想 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。(2)快速排序的基本思想原创 2013-09-22 20:33:40 · 641 阅读 · 0 评论 -
排序算法之冒泡排序
冒泡排序算法的运作如下:1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3. 针对所有的元素重复以上的步骤,除了最后一个。4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。#include void bubble(int a[],原创 2013-09-22 20:49:23 · 725 阅读 · 0 评论 -
char amessage[] = "the time";与char *pmessage = "the time";区别
char amessage[] = "the time"与char *pmessage = "the time"的区别char amessage[] = "the time"; //定义一个数组char *pmessage = "the time"; //定义一个指针amessage是一个仅仅足以存放初始化字符串和空字符'\0'的一维数组,数组中的每个单词可以进行修改原创 2013-09-19 20:42:49 · 982 阅读 · 0 评论 -
C语言实现四则运算
#include #include #include #include //判断运算符的优先级函数 int Precede(char a, char b) { switch (a) { case '*': case '/': if ((b == '+') || (b == '-')) {原创 2013-10-10 11:31:04 · 7250 阅读 · 0 评论 -
C语言中的关键字
首先,C语言中到底有多少个关键字呢?木有错,ANSI C规定是32个! 他们分别是:auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default原创 2013-06-05 09:13:32 · 820 阅读 · 0 评论 -
每K个元素翻转一次链表,若最后剩余元素不足K个,不进行翻转(美团2014校招试题)
给定一个单链表和一个整数k,要求每隔k哥元素翻转链表一次struct node{ int key; struct node* next;};typedef node* List;实现函数:List kReverse(List *head,int k)比如:原始链表为:1—>2—>3—>4—>5—>6k=2 翻转为:2—>1—>4—>3—>6—>5k=原创 2013-09-11 15:52:49 · 1884 阅读 · 5 评论 -
排序算法之归并排序
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,归并排序将两个已排序的表合并成一个表。归并排序基本原理: 通过对若干个有序结点序列的归并来实现排序。 所谓归并是指将若干个已排好序的部分合并成一个有序的部分。归并排序基本思想:设两个有序的子序列(相当于输入序列)放在同一序列中相邻的位置原创 2013-09-22 17:07:26 · 692 阅读 · 0 评论 -
字符串转换成数字
字符串转换成数字#include #include #define MAX 2147483647int stoi(char *s){ int val,i,sign; if(s == NULL) return 0; for(i=0;isspace(s[i]);i++) ; sign = (s[i] = '-')? -1:1;原创 2013-09-20 10:25:28 · 790 阅读 · 0 评论 -
strcpy函数与memcpy函数的实现
1.已知:strcpy函数的原型是char * strcpy( char *strDest, const char *strSrc )要求:不调用库函数,实现strcpy函数char * strcpy( char *strDest, const char *strSrc ) { if(strDest == strSrc) //考虑内存重叠原创 2013-09-17 19:39:29 · 794 阅读 · 0 评论 -
指针和数组基础
关于C语言中指针和数组的争论就像是一场恶战。一方面,有些人觉得,所有人都必须承认指针与数组是不同的。而另一些人则认为数组被当成指针来处理,因此它们不应该有什么区别。这种现象让人迷惑。然而,这两种说法其实都是正确的。数组不是指针,指针也不能说是数组。在C语言中,指针仅在内存中代表一个地址,而数组是许多连续的内存块,多个类型相似的元素存储在其中。更深入的解释,请参考博文《C语言内存地址》。在C语言原创 2013-08-16 19:09:05 · 590 阅读 · 0 评论 -
字符串中的删除操作
1.删除指定字符该方法是《The C programming language》中的一个例子,写的很巧妙,原地删除,没有多用额外的存储空间。void squeeze(char *s , int c){ int i , j; for(i = j = 0 ; s[i] ; i++) { if(s[i] != c) s转载 2013-09-07 17:14:19 · 1216 阅读 · 0 评论 -
单链表的创建、遍历、插入、删除、查找、逆转
#include #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 /* 存储空间初始分配量 */typedef int Status;/* Status是函数的类型,其值是函数结果状态代码,如OK等 */typedef int ElemType;/* ElemType类型根据实原创 2013-09-09 10:31:03 · 1711 阅读 · 0 评论 -
二叉排序树的插入、查找、删除、遍历(C语言版)
#include #include typedef struct treeNode{ int data; struct treeNode *left; struct treeNode *right;}treeNode;treeNode* FindMin(treeNode *node){ if(node==NULL)原创 2013-09-09 21:36:16 · 1514 阅读 · 0 评论 -
以每K个元素为一组逆转单链表
问题:给定一个链表,写一个函数来逆转链表中的每K个节点,K是一个给定的值。例如:输入: 1->2->3->4->5->6->7->8->NULL and k = 3 输出: 3->2->1->6->5->4->8->7->NULL. 输入: 1->2->3->4->5->6->7->80->NULL and k = 5输出: 5->4->3->2->1->8->7原创 2013-09-11 10:47:16 · 1387 阅读 · 0 评论 -
字符串的解压缩
问题描述:对字符串进行解压缩例如:5W1G2B ---> WWWWWGBB解决方案:1.将输入字符串分别为集合5W、1G、2B,每个集合由一个数字和一个字符构成 2.从尾到头读取字符串,当遇到一个字符的时候,保存下来;当遇到一个数字的时候,我们开始创建一个数,直到遇到下一个字符 3.当遇到下一个字符之前原创 2013-09-11 09:49:35 · 1499 阅读 · 0 评论 -
链栈:初始化、判断栈空、入栈、出栈、获取栈顶元素等
#include #include #define TRUE 1#define FALSE 0typedef int ElementType;typedef struct node { ElementType data; struct node *next;}StackNode, *LinkStack;/* 链栈的初始化 */void InitStack(原创 2013-09-12 09:55:49 · 21878 阅读 · 3 评论 -
每间隔K个元素逆转一次单链表
例如:Inputs: 1->2->3->4->5->6->7->8->9->NULL and k = 3Output: 3->2->1->4->5->6->9->8->7->NULL. 方法1:#include#include /* Link list node */struct node{ int data; struct node* n原创 2013-09-11 11:07:31 · 1055 阅读 · 0 评论 -
运算符优先级问题
1) 前置 ++ 和 * 的优先级是相同,都是从右向左结合2) 后置++的优先级高于 *和前置++, 后置++从左向右结合原创 2015-11-23 17:58:24 · 784 阅读 · 0 评论