数据结构
文章平均质量分 57
LHN_hpu
广告系统/数据平台/php/Golang
展开
-
十字链表&稀疏矩阵
#include#includetypedef struct OLNode{ int i,j; // 该非零元的行和列下标 int e; // 非零元素值 struct OLNode *right,*down; // 该非零元所在行表和列表的后继链域 }OLNode, *OLink;typedef struct// 行和列链表头指针向量基址,由原创 2014-11-25 18:52:34 · 783 阅读 · 0 评论 -
复杂链表的复制
#includeusing namespace std;struct ComplexListNode{ int m_value; ComplexListNode* m_pnext; ComplexListNode* m_pSibling;};//分为三步,第一步直接N'复制在N的后面void CloneNodes(ComplexListNode* pHead){ //赋值一个链原创 2016-09-04 10:56:17 · 396 阅读 · 0 评论 -
二叉搜索树转化为有序双向链表
#includeusing namespace std;struct BinaryTreeNode{ int m_value; BinaryTreeNode* m_left; BinaryTreeNode* m_right;};BinaryTreeNode* Convert(BinaryTreeNode* pRootoftree){ BinaryTreeNode *pLastN原创 2016-09-04 14:00:20 · 327 阅读 · 0 评论 -
数组中c出现次数超过一半的数字
#includeusing namespace std;//最后出现1的肯定就是出现一半的字符 int MoreThanhalfnum(int *numbers,int length){ if(numbers == NULL || length<= 0) return 0; int result = numbers[0]; int times = 1; for(int i=1;i<原创 2016-09-04 16:36:31 · 455 阅读 · 1 评论 -
打印从1到N的数
输入:1 打印123456789输入:2打印123456789-99#include #include #include void printnumber(char *number){ bool isBeginning0 = true; int nlength = strlen(number); for(int i=0;i<nlength;++i){ if(isBe原创 2016-08-14 10:14:59 · 1039 阅读 · 0 评论 -
bitmap算法
久闻《编程珠玑》一书中提出的bitmap算法之大名,只是没有深入的去研究,今天下午有兴致研究一番,才知道其中的玄机奥秘,不亚于KMP算法之巧妙,下面就由浅入深的谈谈bitmap算法。 一、bitmap算法思想 32位机器上,一个整形,比如int a; 在内存中占32bit位,可以用对应的32bit位对应十进制的0-31个数,bitmap算法利用这种思想处理大量数据的排序与查转载 2016-08-14 11:11:05 · 404 阅读 · 0 评论 -
大数相加
#include #include #include #define MAX 10000000;//大数相加 void main(){ char num1[MAX]; char num2[MAX]; int length1,length2; while(scanf("%s%s",num1,num2)!=EOF){ length1=strlen(num1); length2原创 2016-08-14 15:59:11 · 368 阅读 · 0 评论 -
o(1)时间删除单链表的某个节点
#include #include #include struct Node{ int m_value; Node *m_nextNode;};void deleteNode(Node** pHead,Node* toBedelNode){ if(*pHead==NULL||pHead == NULL||toBedelNode==NULL) return ; //判断是不是末尾原创 2016-08-14 15:59:57 · 392 阅读 · 0 评论 -
调整数组顺序使得奇数在偶数前面
#include #include #include void RecorderOddEvent(int *pData,unsigned int length){ if(pData == NULL||length == 0)return ; int *pstart = pData;//指向头 int *pend = pData + length - 1;//指向尾巴 w原创 2016-08-14 16:00:45 · 359 阅读 · 0 评论 -
遍历一遍找出链表倒数第K个节点
#include #include #include //类似的问题还有求链表的中间节点判断一个单向链表是否形成了环形结构 struct Node{ int node_val; Node* node_next;};Node* findNode(Node* pHead,unsigned int k){ if(pHead==NULL||k=0) return NULL; No原创 2016-08-14 16:35:06 · 624 阅读 · 0 评论 -
反转链表
#include #include #include struct Node{ int p_val; Node* p_next;};Node* ReverseList(Node* pHead){ if(pHead == NULL) return;//空指针 if(pHead->p_next == NULl) return pHead;//如果只有一个节点 Node*原创 2016-08-14 17:21:18 · 256 阅读 · 0 评论 -
连续子数组的最大和
#include using namespace std;int main(){ return 0;}int FindGeateSumofsubarray(int *pData,int nLength){ if((pData == NULL || nLength <=0)) return 0; int sum = 0;//当前最大和 int greatsum = 0x80原创 2016-09-07 10:24:35 · 305 阅读 · 0 评论 -
字符串全排列
#include using namespace std;void Permutation_o(char* pStr, char* pBegin) { if (*pBegin == '\0' ) { cout << pStr <<endl; } else { for (char* pCh = pBegin; *pCh!=原创 2016-09-08 17:28:10 · 258 阅读 · 0 评论 -
丑数(空间换时间)
#include #include using namespace std;int Getuglynumber(int index);int Min(int number1,int number2,int number3);int main(){ int index; cin>>index; int result = Getuglynumber(index); cout<<r原创 2016-09-08 21:29:03 · 352 阅读 · 0 评论 -
二叉树中和为某一值的路径
#include#include#includeusing namespace std;struct BinaryTreeNode{ int m_value; BinaryTreeNode* m_pleft; BinaryTreeNode* m_pright;}; void find(BinaryTreeNode* pRoot,int expectedsum){ if(pR原创 2016-09-03 16:29:44 · 278 阅读 · 0 评论 -
输入一个矩阵,按照从外向里顺时针的顺序依次打印出每一个数字
#include#includeusing namespace std;//输入一个矩阵,按照从外向里顺时针的顺序依次打印出每一个数字 void printMatrix(int** numbers,int colums,int rows){ if(numbers == NULL||colums<=0||rows<=0) return; int start = 0; //条件是最后原创 2016-08-19 18:12:53 · 1633 阅读 · 0 评论 -
顺序表
顺序表// copyright of matter . 2014-9-29 //#include#include#include#include#define INCREMENT 10#define LIST_INIT_SIZE 100using namespace std;/*结构体*/typedef struct {int *element;int Length;原创 2014-11-25 18:36:22 · 452 阅读 · 0 评论 -
堆栈
#include#include#includetypedef struct Node{ int data; struct Node *pNext;}NODE,*PNODE;typedef struct Stack{ PNODE pTop; PNODE pBottom;}STACK,*PSTACK;void init(PSTACK);void push(PSTAC原创 2014-11-25 18:42:05 · 517 阅读 · 0 评论 -
循环队列
//循环队列#include#include#includetypedef struct Queue{ int * pBase;int front;int rear;}QUEUE;void init(QUEUE *);bool en_queue(QUEUE *,int val);//入队 void traverse_queue(QUEUE *);//遍历 bool原创 2014-11-25 18:43:06 · 515 阅读 · 0 评论 -
二叉树
//copyright of matter 2014/11/21 #include#include#include#define STACK_INIT_SIZE 100 #define STACK_INC_SIZE 10 //这里我们用顺序栈 //树的节点区 typedef struct BiTreeNode{ char data; struct BiTreeNode *p原创 2014-11-25 18:50:02 · 459 阅读 · 0 评论 -
括号匹配
#include#include#include#includetypedef struct Node{char data;struct Node *pNext;}NODE,*PNODE; //构造节点 typedef struct Stack{PNODE pTop;PNODE pBottom;}STACK,*PSTACK; //构造堆栈,pTop永远指向栈顶,pBot原创 2014-11-25 18:45:42 · 576 阅读 · 0 评论 -
图的广搜、深搜及拓扑排序
#include#include#include#include#define MAX_NUM 100 // 图的点的个数 #define ERROR -1typedef struct ArcNode{ int adjvex; // 顶点所在的位置 struct ArcNode *nextarc; // 下一条边的指针 }ArcNode;typedef stru原创 2014-12-15 16:32:20 · 1067 阅读 · 0 评论 -
一元多项式的相乘
/**copyright of Matter 2014/10/13**/#include#include#include#include//多项式中的一项的结构typedef struct term{ double coef;//系数 int expn;//指数 struct term* next;}PolyNode ,*pPolyNode;/*****声明区域***原创 2014-11-25 18:38:52 · 829 阅读 · 0 评论 -
合并两个排序的链表
#include#include#includestruct Node{ int m_value; Node *m_next;};//递归方式 Node* Merge(Node* pHead1,Node* pHead2){ if(pHead1==NULL) return pHead2; elseif(pHead2==NULL) return pHead1; Node原创 2016-08-15 18:07:58 · 382 阅读 · 0 评论 -
链表
#include#include#includetypedef struct Node{int data;//数据域 struct Node *pNext;//指针域 }NODE,*PNODE;//NODE等价于struct Node PNODE等价于struct Node*//函数声明PNODE creat_list(void);//创建 void traverse_list原创 2014-11-25 18:40:56 · 497 阅读 · 0 评论 -
PHP关于二叉树的前序中序后序遍历操作
<?phpecho "PHP树的操作";/* * 二叉树遍历 */class Node{ public $value; public $left; public $right;}//前序遍历 遍历根节点->遍历左子树->遍历右子树function preorder($root){ $stack = array(); //每次都放一个节点入栈 array_push($原创 2016-08-02 11:33:05 · 1406 阅读 · 0 评论 -
二叉树的各类操作
#include #include #include#include typedef char ElemType; //树结构 typedef struct tree { ElemType data; struct tree * lchild; struct tree * rchild; }TreeNode,*Tree;原创 2016-08-17 21:47:43 · 423 阅读 · 0 评论 -
树的子结构
#include #include using namespace std;struct BinaryTreeNode{ char t_value; BinaryTreeNode *t_left; BinaryTreeNode *t_right;};void createtree(BinaryTreeNode* &T){ char val; cin>>val; if(v原创 2016-08-18 21:53:06 · 332 阅读 · 0 评论 -
第一个只出现一次的字符(Hash)
#include#includeusing namespace std;//题目要求:在字符串中找出第一个只出现一次的字符,如输入"abaccdeff",则输出b。//传统方法的时间复杂度为o(n^2)//现在我们要用o(n)的方法来解决这个问题//运用hash表,用key代表字符,value代表字符出现的次数char Firstnotrepeatingchar(char *pS原创 2016-09-09 11:30:15 · 469 阅读 · 0 评论 -
不用加减乘除做加法
#include #include using namespace std;int cal(int num1,int num2);int main(){ int num1,num2; cin >> num1; cin >> num2; int re = cal(num1,num2); cout<<re<<endl; return 0;}int cal(int num1,原创 2016-09-26 21:21:43 · 361 阅读 · 0 评论