架构算法
Dark_Song
一个没有昨天的人
展开
-
算法设计-利用栈判别表达式中的括弧是否配对
假设一个算术表达式中包括()、[]、{}三种类型的括弧,编写一个判别表达式中括弧是否正确配对的函数correct(exp,tag);其中:exp为字符串类型的变量(可理解为每个字符占用一个数组元素),表示被判别的表示式。 tag为布尔型变量。思路:用栈st进行判定,遇到(、[、{时入栈,当遇到)、]、}时,检查当前栈顶元素是否是对应的(、[、{,若是则退栈,否则返回表示不配对。当整...原创 2018-04-15 17:52:40 · 5471 阅读 · 0 评论 -
算法设计-后序(根)遍历二叉树
》利用栈实现Status PostOrderTraverse(BiTree T,Status(*Visit)(TElemType e)){ //后序遍历二叉链表,每个元素调用Visit InitStack(S);P=T; while (p||StackEmpty(S)){ if(p){ ...原创 2018-04-17 10:48:24 · 425 阅读 · 0 评论 -
算法设计-先序(根)遍历二叉树
》利用栈实现StatusPreOrderTraverse(BiTree T,Status(*Visit)(TElemType e)){//先序遍历二叉链表,每个元素调用Visit InitStack(S);P=T; while (p||StackEmpty(S)){ if(p){ ...原创 2018-04-17 10:06:22 · 946 阅读 · 0 评论 -
算法设计-中序(根)遍历二叉树
》利用栈实现Status InOrderTraverse(BiTree T,Status(*Visit)(TElemType e)){ //中序遍历二叉链表,每个元素调用Visit InitStack(S);P=T; while (p||StackEmpty(S)){ if(p){ ...原创 2018-04-17 09:54:49 · 1066 阅读 · 0 评论 -
算法设计-利用标记tag判别队列是否为空或满
假设一个数组squ[m]存放循环队列的元素,要使这个m个分量都得到利用,以设立标记tag为0或者1来区分尾指针和头指针值相同时队列的状态是空还是满。思路:(rear+1)%m==front 则队列满,(front+1)%m==rear则队列空。队列开始为空,设tag=0。int Algo(Queue Q,int m){ int tag=0; ...原创 2018-04-16 08:53:09 · 3058 阅读 · 0 评论 -
算法设计-利用栈和队列判别读入的字符串是否为回文
读入的一个字符串以‘@’为结束符,是回文返回TRUE,否则返回FALSEbool PalindromeTest(){ InitStack(S);InitQueue(Q); while((c=getchar())!='@'){ Push(S,c); EnQueue(Q,c); 同时入栈和入队 }//while w...原创 2018-04-16 08:52:46 · 8189 阅读 · 0 评论 -
算法设计-利用栈把十进制转换成二进制
十进制转换成二进制 void conversion(){ InitStack(S); scanf(“%d”,n); while(N){ Push(S,n%2) n=n/2; } while(!StackEmpty(S)){ Pop(S,e); printf(“%d”,e); } }//conversion原创 2018-04-16 08:52:54 · 11591 阅读 · 1 评论 -
算法设计-归并两个非递减有序排列的链表
-两个非递减有序链表归并 Void MergeList_L(LinkList &La,LinkList &Lb){ pa=La->next;pb=Lb->next; q=La; while(pa&&pb){ if(pa->data<=pb->data){q=pa;pa=pa->next;} else {t=p...原创 2018-04-15 18:07:51 · 2057 阅读 · 0 评论 -
算法设计-比较两个线性表的大小
设A={a1,…an},B={b1,….bm}为两个线性表。 >比较原则:首先去掉A,B两个集合的最大前缀子集之后如果A,B为空,则A=B; 如果A空B不空,A<B;如果B空A不空,A>B;如果A和B均不空,首元素大者为大。 >int Compare(SqList A,SqList B){ while(j<A.length&&j<B.lengt...原创 2018-04-15 18:06:02 · 4108 阅读 · 2 评论 -
算法设计-归并两个非递减有序排列的线性表
已知线性表La和Lb中的数据元素按值非递减有序排列,现要求将两个线性表归并为一个新的线性表Lc,Lc中的数据要求按值非递减有序。 void MergerList(List &La,List &Lb,List &Lc) { //归并a,b线...原创 2018-04-15 18:02:47 · 5849 阅读 · 1 评论 -
算法设计-利用栈逆置队列中的数据元素
利用栈逆置队列中的数据元素 void algo(Queue &Q){ Stack S;int d; InitStack(S); while(!QueueEmpty(Q)){ //如果队列飞空,出队入栈 DeQueue(Q,d); Pusu(S,d...原创 2018-04-15 17:55:28 · 5735 阅读 · 3 评论 -
算法设计-双向线索链表的二叉树中序遍历
注:详细概念请看数据结构->五、树status InOrderTraverse_Thr(BiThrTree T,visit()){ p=T->lchild; while(p!=T){ while(p->LTag==Link) p=p->lchild; visit(p-&g...原创 2018-04-17 15:09:47 · 706 阅读 · 0 评论