
C语言与算法
sinat_24076763
这个作者很懒,什么都没留下…
展开
-
二叉树创建和遍历
#include <stdio.h>#include <stdlib.h>// 带返回值创建二叉树 最简单方法//节点数据结构struct bs_node{ int value; struct bs_node *left; struct bs_node *right;};typedef struct bs_node tree;// tree *head,*p,原创 2015-11-23 17:15:38 · 328 阅读 · 0 评论 -
二叉树的非递归前序遍历
二叉树的遍历有递归和非递归两种,递归的已经写过,就写了一下非递归的前序遍历。中序和后续整好了一起贴另一篇。二叉树遍历,节点位置一会移动了几次一会又回来了,进进出出,所以用栈比较适合。(我瞎说的,因为我看它们都是用栈,就用栈了,咳咳)话说,我C++倒是学过,但是很少用C++编,因为学得不好,C++细节太多了,也记不住。所以我用的c,但是呢,C标准自己也没看过,偶尔就编到C++的范围了(传参有时候不想用原创 2015-11-24 22:56:38 · 656 阅读 · 0 评论 -
用文件IO而不是stdio输入输出
文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。这段代码是我刚写的,不是什么技巧性很强的东西,完全都是基础。上午线性代数讲了矩阵乘法,下午没课,寻思着自己也好久没写程序了,不如就拿矩阵乘法开刀,熟悉一下C语言…顺便也可以用来做线性代数的作业…=_=恩,代码有些长,我只是想多回顾一下以前的知识…这段代码用到了函数、指向指针的指针、函数转载 2016-07-17 17:12:18 · 397 阅读 · 0 评论 -
10个C语言常见未定义与执行结果
今天在YouTube看到一个讲C的未定义(C语言没规定,由编译器和机器自由发挥)的视频,很多都是比较有意思的问题,摘录了一下。 视频地址https://www.youtube.com/watch?v=z-RJK-NBKXE 我用ipv6看的,改了hosts,所以才翻过去了。视频里看到的编译器 clang gcc icc 这些在不同的编译器下是不同的结果,我本来准备在线编译,然后看看各个不同编原创 2016-04-14 22:56:35 · 2018 阅读 · 0 评论 -
C语言-位域小问
今天看到位域,觉得挺神奇,但是里面其实有很多坑。有点类似前面字节对齐的地方,但感觉又不全是。 先给给出几道题。1这个是结构体#include "stdio.h"#include "stdlib.h"int main(int argc, char const *argv[]){typedef struct bitzone{ char a; char b; char原创 2016-06-02 18:44:41 · 280 阅读 · 0 评论 -
一套帮助你理解C语言的测试题(转)
在这个网站(http://stevenkobes.com/ctest.html)上发现一套很有趣的C语言测试题,如果你招聘C语言相关开发人员,或者正在学习C语言,很值得做一做。如果没有做,下面内容暂时不要看,最好自己先完成一遍。(目前我进不去这个网站)OK,假设你做的答案没有完全正确,那你可以继续看下去了,否则,后面内容对你来说就是小菜一碟,不值得看。第一题:转载 2016-05-06 16:02:06 · 319 阅读 · 0 评论 -
localtime和gmtime函数使用
#include <stdio.h>#include <stdlib.h>#include <time.h>int main(void){ time_t timep; struct tm *tm_local,*tm_gmt; //get calendar time time(&timep); printf("%d\n",timep ); //原创 2016-04-17 12:38:47 · 1692 阅读 · 1 评论 -
C指针一个简单的小错误(1)-内存分配
大家觉得下面这行代码可以运行不?#include <stdlib.h>#include <stdio.h>int main(int argc, char const *argv[]){ int *p; *p=6; printf("%d\n",*p); return 0;}能否得到正确答案。答案是不能的,因为只是定义了指针p,而没有对它指向的区域进行内存的分配,原创 2016-03-20 21:52:53 · 275 阅读 · 0 评论 -
研究C语言的参数执行顺序
文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。今天看以前做过的题,发现一段代码,引起了我的研究兴趣。。。#include <stdio.h>main(){int i=9;printf("%d %d %d\n",++i,i,--i);printf("%d %d %d\n",i++,i,i--);}这段程序的结果是什么?可转载 2016-04-13 10:40:28 · 484 阅读 · 0 评论 -
C语言之路(易混淆点)
个人遇到的一些比较基础,但是很有意义的问题。1:负数取模 2:整形溢出(要掌握机器数原码补码反码) 3:指针内存分配易忘 4:字节对齐 5:类型转换(强制和自动) 6:原创 2016-04-06 22:51:42 · 480 阅读 · 0 评论 -
C语言(undefined behavior)未定义-序
前面有几篇写得一些简单的错误,其实很多都来自未定义动作,也就是C99标准中没有规定,编译器也不知道会发生什么。如果想要精确了解看C99文档最好,但是全部是英文,并且篇幅较大,我专业英文方面可能不太熟练,速度会太慢,所以就准备查一些未定义,结合一下文档,然后进行归整一下,这篇是序,特开此文,以待后面添加。原创 2016-04-12 19:32:44 · 598 阅读 · 0 评论 -
C各种类型变量所占字节
首先说我的电脑 win7 64 位 编译器gcc 5.2.0 (32位64为兼容的)#include <stdio.h>#include <stdlib.h>int main(int argc, char const *argv[]){ printf("the byte of char is %d\n", sizeof(char)); printf("the原创 2016-04-08 12:29:23 · 1413 阅读 · 0 评论 -
C语言—局部变量同名初始化问题
先看一段代码#include <stdio.h>#include <stdlib.h>int main(int argc, char const *argv[]){ void func2(void) { int a; printf("%d\n", a); } void func1(void) { int a=5原创 2016-04-07 18:07:07 · 599 阅读 · 0 评论 -
C语言-字节对齐
结构体中字节对齐#include <stdio.h>#include <stdlib.h>int main(int argc, char const *argv[]){ struct A { int a; char b; int c; char d; };//16 struct B {原创 2016-04-07 17:39:59 · 763 阅读 · 0 评论 -
C指针错误(3)-链表的尾指针要赋值NULL
下面是建立一个链表和打印链表的函数 输入0为结束#include <stdio.h>#include <stdlib.h>struct ListNode { int val; struct ListNode *next;};struct ListNode* creat_list(){ struct ListNode *head=(struct ListNode *)原创 2016-03-30 21:57:58 · 1253 阅读 · 0 评论 -
C指针一个小错误(2)-返回值不能是局部变量的指针
下面是很简单的几个小事例 int *ret_int(void){ int p[] ={1,2,3,4};//或者int a=3; return p; //return &a;} 调用后将得不到数组值或者a值,成为野指针。(数组名就是数组地址,类似于指针,也不能做局部变量返回值)int *ret_int(void){ int *p =(int *)malloc(s原创 2016-03-21 12:49:50 · 353 阅读 · 0 评论 -
一道让我踏进坑的字符串题目
int main(int argc, char const *argv[]) { char new[]="\0"; printf("%d %d\n", sizeof(new),strlen(new)); return 0; }答案2 0 我的预估是1 0.错误 一直知道字符串末尾要添加‘\0’,但当字符串本身就含有‘\0’时,我恍惚原创 2016-10-13 15:55:59 · 319 阅读 · 0 评论