数据结构
写好三分地
努力写好每一行代码
展开
-
指针函数,函数指针,指向指针函数的函数指针
指针,指针傻傻分不清,指针飞来飞去内存冲突。脑壳痛脑壳疼,今晚琢磨了这几个玩意先说什么是指针函数:其实就是我们用到的,返回值为指针的函数,int* zhizhen_fcn(int* r){ return r;}什么是函数指针:函数指针就是指向函数的指针,变量有地址,所以可以用变量指针指向这个地址,而函数当然也得有内存来放,有的放就有的门牌号,有的门牌号,就可以指针指向了。//返回值类型 ( * 指针变量名) ([形参列表])int temp_fcn(int a, float b){原创 2020-11-26 22:46:56 · 803 阅读 · 0 评论 -
链表的一些常用函数
删除链表中的结点功能代码 //删除某个结点 void deleteNode(ListNode* node) { node->val = node->next->val; node->next = node->next->next; }单链表反转函数代码 //单链表翻转,递归方式 ...原创 2020-04-12 23:07:42 · 628 阅读 · 0 评论 -
vector erase 删除连续重复元素, 和求数组交集
本来在网上一直搜索关于erase函数,但是居然没有找到如何删除连续重复的数字,所以自己调试后,发现it和i都需要进行前移才能避免漏判,如果大家有更好的想法,欢迎在评论区指教。 知识点:在vector中因为vector是顺序存储,所以,一旦删除一个元素,之前获得的迭代器就会失效了,vector.begin()和vector.end()是变化的。注意到,erase的返回值是一个迭代器,而这个迭代器...原创 2020-04-12 17:40:39 · 584 阅读 · 0 评论 -
二叉树的一些常见操作函数
记录一些遇到的二叉树操作函数struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; //二叉树结构体bool CBiTreeB(TreeNode* &a...原创 2020-03-29 22:07:40 · 551 阅读 · 0 评论 -
scanf如何判断输入终止了,EOF的作用
有时候,我们并不知道用户需要输入的数据量大小,此时并不能简单定义足够多的变量,这样会导致内存空间浪费。首先判定输入的数据量终止,可以采用如下代码:scanf("%d %d\n",&a,&b) != EOF //EOF表示scanf输入空置这样可以避免卡在scanf输入上,随后采用动态分配的方式,malloc和realloc来存储变量,可以参考我之前写的C语言动态分配数组。...原创 2020-02-16 22:53:35 · 6064 阅读 · 0 评论 -
堆栈实现表达式求值代码
本来一个建造两个结构体,一个用于定义操作码栈,类型为字符,一个用于定义操作数栈,但是比较懒,就用了一个结构体,所以代码/* 由于采用了getchar获得数据,因此所有结果都是以ASCII码显示,且只能读取0~9//显示的结果只有在-176~80,超过范围则结果不正确//改进方法:单独建立一个新的操作数栈或者链表形式(不合要求)//在操作数位置输入操作符%c,在操作符位置输入操作数%d,但是...原创 2020-01-06 11:19:14 · 489 阅读 · 0 评论 -
葺葺葺问题
最近写赫夫曼编码,使用了malloc,由于是从叶结点向上访问,因此编码是从后往前编码,采用了malloc,先分配一个较大的编码空间(长于最大编码长度count)。为了更好的利用空间,因此采用了先给中间变量分配这个较大的编码空间Temp = (char*)malloc((count) * sizeof(char));随后进行编码,从第count - 1个位置开始往前编码假设到第start个...原创 2019-12-15 21:27:28 · 1100 阅读 · 0 评论 -
哈夫曼树的实现
最近看着书上的赫夫曼构造规则,尝试实现了一波,因为没有参照其他哈夫曼的代码,所以可能实现起来比较繁琐。 其中由于不能直接进行两棵树的调换,因此我采用了数组来标记不同的哈夫曼树,且新合成的哈夫曼树是补在哈夫曼数组wj的后面,被用来合成的两颗小哈夫曼树不会free掉,而是成为新合成树的子树,因此要求传入的wj数组长度为2*n-1,n是权值数目。 我觉得其实代码还有可以改进的地方,例如wj可以设置...原创 2019-12-07 09:13:31 · 211 阅读 · 0 评论 -
动态数组生成和数组长度改变
一、生成动态数组有时候我们无法确定我们所需数组空间大小,这时候,我们可以使用malloc函数malloc函数的使用格式一般为int len;L = malloc(sizeof(int) * len); //len生成的数组长度,free(L)此时L就是一个为int类型的,可以容纳len个元素的动态数组注:malloc是按字节数生成的空间大小,不是按照数组长度;动态数组最后要f...原创 2019-09-11 10:00:35 · 3964 阅读 · 0 评论