C语言
文章平均质量分 58
u012137644
这个作者很懒,什么都没留下…
展开
-
typedef定义的struct类型与struct定义的结构体变量在使用上的区别
typedef struct{int number;char[20] name;char sex;}Student;此定义的Student可作为一个类型名定义struct类型变量,可以这样定义新变量:Student stu1;。struct Student{int number;char[20] name;char sex;原创 2014-03-04 16:55:44 · 799 阅读 · 0 评论 -
c语言的函数内存分配及指针函数的用法
程序中定义了一个函数,在编译时,编译系统为原创 2014-04-12 10:11:09 · 996 阅读 · 0 评论 -
数组循环移位算法
要求:设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。不合题意的解法如下:我们先试验简单的办法,可以每次将数组中的元素右移一位,循环K次。abcd1234→4abcd123→34abcd12→234abcd1→1234abcd。版本1void RightShift(char *arr, int N, int k转载 2014-04-08 21:45:24 · 830 阅读 · 0 评论 -
C语言编译时的字对齐现象
先看下面代码#includeint main(){struct X {int a;char b;int c; }; printf("%d,",sizeof(struct X));struct Y {int a;char b ;int c;char d;}; printf("%d\n",sizeof(struct Y));return 0;}转载 2014-04-03 21:12:43 · 781 阅读 · 0 评论 -
串的模式匹配——KMP算法
KMP算法代码如下:int Index_KMP(SString S,SString T,int pos){ i=pos;j=1; while(i<=S[0]&&j<=T[0]) { if(j==0||S[i]==T[j]) {++i;++j;} else j=next[j]; } if(j>T[0]) return i-T[0];原创 2014-04-01 16:48:11 · 793 阅读 · 0 评论 -
图像染色问题
一、题目:3.20③ 假设以二维数组g(1..m,1..n)表示一个图像区域,g[i,j]表示该区域中点(i,j)所具颜色,其值为从0到k的整数。 编写算法置换点(i0,j0)所在区域 的颜色。约定和(i0,j0)同色的上、下、左、右的邻接点为同色区域的点。 实现下列函数: void ChangeColor(GTYPE g, int m, int n, ch转载 2014-03-20 22:34:15 · 1383 阅读 · 0 评论 -
用占位符%p输出变量在内存中的具体地址
占位符%p可以让printf语句输出变量在内存中的具体地址,如下:#includeint main(){ int a=10; printf("the address that %p has stay a number :%d\n",&a,a);}原创 2014-03-17 22:04:40 · 1210 阅读 · 0 评论 -
向顺序表插入新元素且不破坏其顺序性的高效率算法
向顺序表L插入新元素x时可以由最后一个元素开始遍历,在遍历的同时进行移位赋值操作,如当遍历到的元素L.elem[i]比x大时,将L.elem[i]后移在下个元素的位置,而其所在位置则由x占有,当遍历到的元素L.elem[i]比x小时,则跳出循环,目的已经达到,具体算法如下:void InsertOrderList(SqList &L, ElemType x)// 在有序的顺序表 L 中保序原创 2014-03-07 16:40:35 · 1388 阅读 · 0 评论 -
带头结点的单链表实现就地逆置的更优方法
在习惯上,我们在实现链表的逆置时都会采用从第一个结点开始遍历并不断将链表的指向逆置的方法,但这样做效率其实不高。假设要逆置的链表为L,更好的方法是先用指针p保存L-〉next,再将链表L的头结点置为Null,亦即L-〉next=Null,而后将p所指向的原存在于L的各个结点插入在已经置空的L中,作为L的第一个元素结点,p则每次下移用于记录剩下结点的位置。具体代码如下:p=L->next;L原创 2014-03-13 21:34:31 · 3184 阅读 · 0 评论 -
堆与栈的区别
在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教转载 2014-03-11 22:13:58 · 509 阅读 · 0 评论 -
高效地初始化一个链表
建立一个带有头结点的链表并将之初始化,通常有两种方法:1、每次开辟一个新结点并将之接在链表末尾处 2、每次开辟一个新结点并将之接在链表开头处,即接在头结点之后。方法一在每次开辟新结点后还要用一个循环原创 2014-03-11 12:58:34 · 1704 阅读 · 0 评论 -
C语言中malloc,calloc,realloc,free的语法与作用
四个函数的声明分别是: void* realloc(void* ptr, unsigned newsize); void* malloc(unsigned size); void* calloc(size_t nelem, size_t elsize); free(q);转载 2014-03-04 17:13:20 · 771 阅读 · 0 评论 -
C语言中realloc()使用的说明
首先看个问题程序(这里用的是TC编译器):#include "stdlib.h"#include "stdio.h"void main(){ int *i; i=(int *)malloc(sizeof(int)); *i=1; *(i+1)=2; printf("%x|%d\n",i,*i); printf("%x|%d",i+1,转载 2014-03-04 17:20:36 · 874 阅读 · 0 评论 -
通过队列实现判断一棵二叉树是否为完全二叉树
要实现题目的功能,则需在用队列遍历原创 2014-04-28 22:31:12 · 1660 阅读 · 0 评论