自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

kelvinmao的博客

Don't be evil

  • 博客(11)
  • 收藏
  • 关注

原创 二叉树顺序存储的实现

在实现二叉树的顺序存储的过程中,遇到了一些问题,现记录如下:#include<stdio.h>#include<stdlib.h>#include<math.h>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 100/*存储空间初始分配量*/#define MAX_TREE_SIZE 10

2016-04-30 20:25:59 4983

原创 对于C语言free()函数的一些反思

上周在解决一道课后习题的时候,偶然间发现了一个自己从未注意过的问题,问题描述如下:在遍历一个循环链表时,我发现在我调用free()函数删除了一个节点之后,仍然能用printf打印出原先的数据,起初我以为是巧合,并未加以注意。今天我又尝试free其他节点,之后仍然能够通过printf打印出原先的值,这个问题立刻引起了我的注意。下面将出现问题的代码附在下方,供各位查看:#include<stdio.

2016-04-27 10:53:12 2856

原创 数据结构与算法习题汇总(4)

一. 用rear,front表示队尾和队首指针,实现循环队列入队,出队算法/*入队列*/ status enterqueue(queue *Q,elemtype data){ if((Q->rear+1)%maxsize==Q->front){ printf("队列已满\n"); return ERROR; } Q->data[Q->rear

2016-04-27 10:36:33 1020

原创 借助栈实现表达式的计算

这两天要复习准备考试,博客没有及时更新。另一方面,后缀表达式的转化及求值的程序始终没有写好,让我异常苦恼,心情也是莫名烦躁。现在表达式求值的程序已基本实现,仍有不足之处需要改进,各位可以参考,由于时间关系,无法细致讲解。将在考完试后的更新中加以补充,各位先看代码后的注释吧,注释还是比较详细的,代码如下#include<stdio.h>#include<stdlib.h>#define OK 1

2016-04-20 23:40:11 591

原创 数据结构与算法习题汇总(3)

Q:判断一字符串是否为回文 A:对于这种要求输入和输出相反的情况,一般采用栈来解决,对于此题,只需将正序的字符串压栈再将其全部弹出栈,判断是否相同即可,代码如下:#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 100ty

2016-04-13 22:04:37 1383

原创 栈的思想用于求解迷宫问题

迷宫问题是一个经典的问题,当迷宫规模较大时,手工求解是十分困难的,所以用善于进行重复繁琐计算的计算机来求解便十分合适。基本思想和解决“八皇后问题” 的思想一致,都是利用回溯法。从入口开始,探索每一个迷宫中没有被墙挡住的位置,如果该位置可以移动到下一个位置,则标记该位置已被探索过并入栈;如果不能移动到下一位置,则标记为探索失败并回退到上一个位置,如果最终退回了出发点,则说明迷宫无解。下面附上代码:#i

2016-04-08 22:14:41 1160

原创 栈用于解决括号匹配问题

在编写程序的过程中,我们经常需要对一串括号是否匹配进行判断。如何判断呢?我们可以借助栈来进行判断。基本思路是:遍历字符串,当发现有右括号而此时的栈顶元素又恰好是与之匹配的左括号时,则栈顶元素出栈;其余情况全部入栈,代码如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#define OK 1#define ERROR 0#de

2016-04-07 23:01:26 4740

原创 双向链表的应用—实现根据使用频率安排元素位置的功能

在平时使用音乐播放器时,播放列表中的歌曲可以很方便地进行增添,删除,去重等操作。但其本质都可以抽象成一个双向链表。为了更方便用户的使用,我认为还可以增加一个将最常播放的音乐放在播放列表的头部的功能,那么如何实现呢?请看代码:#include<stdio.h>#include<stdlib.h>#include<time.h>#define OK 1#define ERROR 0#defi

2016-04-04 12:56:09 2163

原创 数据结构算法设计题汇总(2)

一.向一个已经排好序的链表中插入新元素并保持有序A:我的思路是,定义p作为游标在链表上移动,直到某个节点的数据域大于待插入元素为止,代码如下:/*保持递增的顺序插入新元素*/status insertinorder(linklist l,elemtype e){ linklist p=l->next,q; /*让p在链表上移动,直到找到一个节点的数据域大于e为止*/ wh

2016-04-04 12:02:20 2268

原创 回溯法和栈的思想用于“八皇后问题”的求解

八皇后问题是一个经典的问题,其核心是:在n*n的棋盘上,有n个皇后,这些皇后必须位于不同行不同列上,并且不能处于同一对角线上,否则会因相互攻击而死亡。那么如何安排皇后们的位置呢?我们可以利用回溯法,先确定第一个皇后的位置,之后进入下一行,确定第二个皇后的位置,再之后进入下一行,如果发现找不到一个位置安排新皇后,则回退到上一行,将上一行的皇后向后移动一列,再考虑下一行的皇后,如此循环,直到安排好所有

2016-04-03 11:17:28 4480

原创 双向链表的建立与基本操作

双向链表比单链表有更好的灵活性,其大部分操作与线性表相同。下面总结双向链表与单链表之间的不同之处及我在实现过程中所遇到的问题。1.双向链表的建立 双向链表在初始化时,要给首尾两个节点分配内存空间。成功分配后,要将首节点的prior指针和尾节点的next指针指向NULL,这是十分关键的一步,因为这是之后用来判断空表的条件。同时,当链表为空时,要将首节点的next指向尾节点,尾节点

2016-04-02 18:39:40 13807 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除