数据结构与算法
文章平均质量分 67
ljf913
这个作者很懒,什么都没留下…
展开
-
妙趣横生的算法实例1-1
下面是我写的答案: #include #define MaxSize 10 int Sqlist[MaxSize]; int len = 0; void show(int length) { int i = 0; int tmp = length; while(tmp > 0) { printf("%d ", Sqlist[i]); i++; t原创 2012-12-31 13:11:41 · 633 阅读 · 1 评论 -
剑指offer-->面试题7 用两个栈实现队列
下面是Queue.h #pragma once #include #include using namespace std; template class CQueue { public: CQueue(void); ~CQueue(void); void appendTail(const T &node); T deleteHead(); private: stac原创 2013-02-19 15:54:31 · 505 阅读 · 0 评论 -
妙趣横生的算法实例2-2-->折半查找
源代码如下: #include int binSearch(int key[], int n, int k) { int low = 0, high = n - 1, mid; while(low <= high) { mid = (low + high) / 2; if(key[mid] == k) { return mid; }else if(key[mid]原创 2013-02-15 20:15:47 · 499 阅读 · 0 评论 -
剑指offer-->面试题6 重建二叉树
下面是源代码: #include struct BinaryTreeNode { int m_nValue; BinaryTreeNode *m_pLeft; BinaryTreeNode *m_pRight; }; BinaryTreeNode *ConstructCore(int *startPreorder, int *endPreorder, int *startInorde原创 2013-02-08 13:29:07 · 1199 阅读 · 0 评论 -
妙趣横生的算法实例1-7
下面是源代码: #include #include int visited[5] = {0, 0, 0, 0, 0}; typedef struct ArcNode { int adjVex; struct ArcNode *next; }ArcNode; typedef struct VNode { int data; ArcNode *firstArc; }VNode;原创 2013-02-08 09:49:50 · 482 阅读 · 0 评论 -
妙趣横生的算法实例1-7
下面是源代码: #include #include int visited[5] = {0, 0, 0, 0, 0}; typedef struct ArcNode { int adjVex; struct ArcNode *next; }ArcNode; typedef struct VNode { int data; ArcNode *firstArc; }VNode;原创 2013-02-06 19:17:42 · 1251 阅读 · 0 评论 -
剑指offer-->面试题5 从尾到头打印链表
#include #include typedef struct ListNode { int m_nValue; ListNode *m_pNext; }ListNode; ListNode *createListNode(int value) { ListNode *node = new ListNode(); node->m_nValue = value; node->m_原创 2013-01-20 19:53:32 · 1490 阅读 · 0 评论 -
妙趣横生的算法实例1-6
我想这道题时,一直想不到该怎么样使从下一层返回上一层时,上一层数不变,因为我想在遍历里面定义一个变量,怎么也行不通,看了书上是又多传进来一个参数,这个问题就迎刃而解了。 #include #include typedef struct biTNode { char data; struct biTNode *lChild, *rChild; }biTNode, *biTree; vo原创 2013-01-16 21:01:13 · 426 阅读 · 0 评论 -
剑指offer-->面试题4 替换空格
我想到了从前往后移,不过时间复杂度是O(n^2),从后往前移,时间复杂度可以降到O(n)。下面是O(n)的代码: #include #define LENGTH 100 void replaceSpace(char *str, int length) { int i = 0; int numberOfChar = 0; int numberOfSpace = 0; int inde原创 2013-01-13 19:23:19 · 1013 阅读 · 0 评论 -
妙趣横生的算法实例1-5
#include #include typedef struct qNode { char data; struct qNode *next; }qNode, *queuePtr; typedef struct { queuePtr front; queuePtr rear; }linkQueue; void initQueue(linkQueue *q) { q->fron原创 2013-01-12 21:24:17 · 526 阅读 · 0 评论 -
剑指offer-->二维数组中的查找
这个答案不是我想出来的,而是看的书上的,然后我把答案默写出来了,不过改成c语言下可以正确运行的了,令我没想到的是c语言竟然没有bool类型,结果代码一直出错。 这里面也用到了这样一个知识点:在C/C++中,当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针。 #include typedef int bool; #define true 1 #define false 0 bo原创 2013-01-09 21:15:26 · 678 阅读 · 0 评论 -
妙趣横生的算法实例1-4
#include #include #include #define STACK_INIT_SIZE 10 #define STACK_INCREMENT_SIZE 10 typedef char ElemType; typedef struct { ElemType *base; ElemType *top; int stackSize; }stack; void init原创 2013-01-06 21:15:31 · 573 阅读 · 0 评论 -
妙趣横生的算法实例1-3
#include #include typedef struct node { int data; struct node *next; }LNode, *LinkList; void destroyLinkList(LinkList *list) { LinkList p, r; p = *list; while(p) { r = p->next; free(p);原创 2013-01-02 19:01:59 · 442 阅读 · 0 评论 -
妙趣横生的算法实例1-2
下面是我写的答案,感觉比书上写的答案还符合题意: #include #include #define MaxSize 10 typedef struct { int *elem; int length; int listSize; }Sqlist; void initSqlist(Sqlist *L) { L->elem = (int *)ma原创 2012-12-31 13:15:33 · 413 阅读 · 0 评论 -
题目:已知一个完全二叉树的结点数为770,问完全二叉树的叶子结点数为多少?
前一段参加招聘笔试,遇到了这道题,当时连完全二叉树的定义都不太记得了,虽然我答对了但是感觉费了好长时间,心想作为程序员这种题应该编程解决,不要人去算,这也是我最近的领悟,程序就是用来解决问题的,所以我又看了一下数据结构二叉树那一章,推导了一下,发现其实挺简单的。 我们设度数为0,1,2的结点分别为n0, n1, n2, 总的结点数为 n。则有: n = n0 + n1 + n2; 另,根据原创 2013-03-24 21:43:26 · 3677 阅读 · 0 评论