NOJ
文章平均质量分 86
npuyan
这个作者很懒,什么都没留下…
展开
-
西北工业大学NOJ数据结构—007表达式括号匹配
本题为栈的应用,整体思路如下(⇀‸↼‶): 依次读入一串字符串,若 4. 1.是左括号,则直接Push压进栈 2.如果是字符则继续读取下一个字符 3.如果是右括号,则与栈顶元素的左括号比较是否匹配,即‘)’与‘(’,‘】’与‘【’,‘}’与‘{’匹配如果出现不匹配则直接打印no并停止运行;如果匹配成功则将栈顶的左括号弹出; 4.等到所有字符串都读取完毕之...原创 2018-05-26 15:24:11 · 2720 阅读 · 2 评论 -
西北工业大学NOJ数据结构—017输出以二叉树表示的算术表达式
这个题和上一个基本完全相同,同样是按照先序来输入一个带特殊字符的字符串来创建二叉树,然后直接用中序输出就ok了,中序输出也用递归就好思路就不分析了,直接上代码ojbk,就酱(づ ̄3 ̄)づ╭❤~#include <stdio.h> #include <stdlib.h> struct BinTree { //定义二叉链表来储存二叉树 char data;...原创 2018-05-28 16:02:38 · 948 阅读 · 0 评论 -
西北工业大学NOJ数据结构—016计算二叉树叶子节点的数目
这个题显然是非常经典的二叉树创建模型,输入字符串而且用特殊字符来表示空节点,用先续输入,显然最好用递归来创建会非常方便(递归大法好),在二叉树的应用中递归确实非常方便,计算机帮我们解决了所有的入栈出栈问题那么解题思路为1.创建递归函数,getchar一个字符,如果这个字符是字母,那么就递归先后创建它的左子树和右子树,如果是特殊字符#,那么就返回一个空指针,不再创建子树。通过这个函数可以输入字符串来...原创 2018-05-26 21:32:42 · 916 阅读 · 0 评论 -
西北工业大学NOJ数据结构—015建立二叉树的二叉链表储存结构
首先分析一下题意,通过一个类似于广义表的数据输入串来构建树,很明显是要通过递归定义来构建,讲真开始我也没思路(懵)偷一下某大佬的图如果每次读入两个数据,那么就基本可以区分是根还是叶,如果出现了图中最下方两种情况,那就再读取一个,一定能判断出到底是叶子还是根节点思路分析:1.每次读入两个字符,如果是第一个字符是‘,’就要再读第三个,如果第三个为‘)’那么就停止,如果第三个是‘(’就再递归创建左子树右...原创 2018-05-26 20:59:54 · 1488 阅读 · 1 评论 -
西北工业大学NOJ数据结构—014求广义表深度
#include <stdio.h>#include <stdlib.h>typedef struct Node{ int A_L;//使用枚举不熟练,A_T代表Atom或List,0为Atom,1为List Node *before;//额外创建一个指针指向之前 Node *tail; union { Nod...原创 2018-05-26 20:06:24 · 1602 阅读 · 0 评论 -
西北工业大学NOJ数据结构—013以十字链表为储存结构实现矩阵相加
这个题......一句话都不想说......万恶的十字链表......搞死我了.......直接上代码.......猝#include<stdio.h>#include<stdlib.h>typedef struct OL{ //定义带有“右”“下”的结构体 int i,j; int ele; struct OL *right,*down;}OL,*o...原创 2018-05-26 19:57:07 · 1429 阅读 · 0 评论 -
西北工业大学NOJ数据结构—012以三元组表作为储存结构实现矩阵相加
题意比较清晰,就是用三元组表储存的两个矩阵加一ha(真的很烦,代码打死我)思路分析:1.由于要相加的两个三元组表都是给拍好顺序的(很好,非常好),所以只要用两个变量依次遍历两个三元组表就OK了,不需要深层查找是否有相符的2.设k指向A矩阵的某元素,i指向B矩阵的某元素,如果k的行列都与i相同,就把这两个元素加起来,如果和不为零,就把这个元素放进c,k++,i++3.如果k的行与i的行相同但是k的列...原创 2018-05-26 18:06:02 · 1487 阅读 · 1 评论 -
西北工业大学NOJ数据结构—011循环右移
这个题......不知道是不是我理解错了......反正我觉得可能是所有作业中最简单的一个(真)大概说一下思路1.用附加储存记录下最后一个元素,把之前的所有元素向右移动一个,最后把记录下的数值赋值到第一个位置2.循环k次....没了 就酱 上代码(づ ̄3 ̄)づ╭❤~#include<stdio.h>#include<stdlib.h>typedef struct a...原创 2018-05-26 17:48:18 · 1890 阅读 · 0 评论 -
西北工业大学NOJ数据结构—009循环队列
本题为循环队列的应用,所谓循环队列,就......循环的队列 呗循环队列可以在有限的队列空间,来回进队列出队列,可以节约大量的储存空间——因为队列只能从一端进入从另一端弹出,所以若是进进出出(滑稽),就会使弹出队列的元素原来占有的位置不能再次被利用但是由于要求使用rear队尾和length长度作为标志,其实可以与使用rear队尾和front队头作为标志相对比,即(front+length)%max...原创 2018-05-26 16:48:42 · 2590 阅读 · 0 评论 -
西北工业大学NOJ数据结构—008逆波兰式
本题为将一个中缀表达式转化为逆波兰式,同样为栈的应用,以下为原题(づ ̄3 ̄)づ╭❤~有必要解释以下逆波兰式,其实就是后缀表达式,也就是计算机计算时识别的语言,比如上方的ab+c*,那么计算机就依次读取,a、b然后+,之后就可以计算a+b,然后c、*,也就是把a+b的和与c相乘,稍微详细一点的逆波兰式推荐知乎搜索:逆波兰式到底是什么鬼(虽然提问者有点睿智,但是几个回答者都是dalao),那么下面为题...原创 2018-05-26 16:22:18 · 4475 阅读 · 1 评论 -
西北工业大学NOJ数据结构—018建立二叉树的二叉链表(以先序和中序为线索)
如果只给出一个先序或者中序或者后序序列,是可以构建多棵树的,但是若给出中序和前序或者给出中序和后序,则一定可以构建唯一的二叉树,因为中序数列最前的节点一定是根节点,然后再前序数列中按照根节点可以将序列分为两部分,左侧为左子树,右侧为右子树,通过递归调用可以依次构建二叉树。不过若是给出前序和后序,则不一定可以构建唯一二叉树,因为根节点位置同样是不确定的。解题思路:1.构建一个递归函数,来构建二叉树,...原创 2018-05-28 16:02:18 · 2449 阅读 · 1 评论