
数据结构
数据结构
zzj753
我很懒,还没有添加简介
展开
-
西北工业大学noj数据结构005单链表的删除
#include <stdio.h>#include <stdlib.h>#define max 1000typedef struct Node{ int data; struct Node*next;}Node,*LinkList;//一般linklist表示头指针,node*表示结点指针LinkList InitList()//初始化{ LinkList l; l=(LinkList)malloc(sizeof(Node));..原创 2021-06-19 14:54:14 · 492 阅读 · 0 评论 -
西北工业大学noj数据结构004单链表的归并
#include <stdio.h>#include <stdlib.h>#define max 1000typedef struct Node{ int data; struct Node*next;}Node,*LinkList;//一般linklist表示头指针,node*表示结点指针/*InitList(LinkList*l)//初始化{ *l=(LinkList)malloc(sizeof(Node)); (*l)->..原创 2021-06-19 14:52:33 · 329 阅读 · 0 评论 -
西北工业大学noj数据结构003顺序表的删除
#include <stdio.h>#include <stdlib.h>#define max 1000typedef struct//顺序表起{ int a[max]; int last;}seq;int chazhao(seq *l,int n)//返回的是在顺序表中的位置,不是数组里的下标{ int i=0; while((i<=l->last)&&(l->a[i]!=n)) ..原创 2021-06-19 14:40:36 · 499 阅读 · 2 评论 -
西北工业大学noj数据结构002线性表的就地逆置
马上考试了把原来的题发出来好复习#include <stdio.h>#include <stdlib.h>#define max 1000#define ok 1#define error 0typedef struct{ int a[max]; int last;}seq;void nizhi(seq*l,int number){ int k; for(int i=number/2;i>=1;i--) { ..原创 2021-06-19 14:39:14 · 367 阅读 · 2 评论 -
西北工业大学noj数据结构001顺序表的插入运算
#include<stdio.h>#include<stdlib.h>#define max 1000#define ok 1#define error 0typedef struct{ int a[max]; int last;}seq;int chazhao(seq *l,int n)//返回的是在顺序表中的位置,不是数组里的下标{ int k=1; for(;k<=l->last-1;k++) { ..原创 2021-06-19 14:36:49 · 506 阅读 · 0 评论 -
noj数据结构019基于图的深度优先搜索策略
这道题主要应用邻接表法表示图,在应用深度优先搜索得出结果,话不多说上代码:#include<stdio.h>#include<stdlib.h>#define MAX_VERTEX_NUM 20#define error -1#define ok 1typedef enum{DG,DN,UDG,UDN} GraphKind;//图的种类 有向图,有向网,无向图,无向网typedef struct ArcNode//弧结点{ int adjvex;//该弧结.原创 2021-06-07 15:26:13 · 418 阅读 · 0 评论 -
noj数据结构018—建立二叉树的二叉链表(严6.65)
这道题比较有挑战性,用先序中序确定了一个二叉树,再用后续输出。思路为依次遍历先序字符串中的元素,先序遍历的值就是这个节点的元素的值,每遍历一个元素都查找他在中序字符串中的位置。如果中序字符串中左边有字符,说明有左子树,对左边字符串再递归调用上述函数。直到没有左子树,右边有字符,那么对右子树调用上述函数,直到遍历到叶子节点。如用示例举例:先序第一个字符为A,A就是根节点的值。查找他它在中序里面的位置发下左右都有字符,说明左右子树都存在。那我们先从左子树开始递归。及用先序里面第二个字符B和中序中A左.原创 2021-05-28 22:03:08 · 814 阅读 · 7 评论 -
数据结构noj17输出以二叉树表示的算术表达式(严6.51)
题目要求的输入是先序输入,而输出形式是中缀表达式,即将线序输入的二叉树用中序顺序输出。值得注意的是算术式的二叉树有三种输出形式:如以下算术式二叉树:先序遍历的前缀输出为:-+abc/de中序遍历的中缀输出为:a+bc-d/e后序遍历的后缀输出为:abc*+de/-剩下要说的都在注释里,话不多说上代码#include<stdio.h>#include <stdlib.h>typedef struct Node{ char data; struct Node*.原创 2021-05-26 12:03:20 · 508 阅读 · 0 评论 -
西北工业大学数据结构noj016计算二叉树叶子节点数目(耿6.14)
这道题思路比较简单,在创建二叉树时可以借鉴先序遍历的方法:如果输入的是非空节点,那将这个值赋给节点,并且以这个节点为参数递归调用这个节点的左右节点,直到空节点;如果输入的是#,那么直接给这个节点赋null;话不多说上代码#include<stdio.h>#include <stdlib.h>typedef struct Node{ char data; struct Node* LChild; struct Node* RChild;}BiTNode,*Bi..原创 2021-05-21 22:19:01 · 439 阅读 · 0 评论 -
西北工业大学noj数据结构015建立二叉树的二叉链表存储结构(严6.70)
这道题考察最基础的二叉链表建立,值得注意的一点是这道题输入形式是以广义表的格式输入,因此创建的函数有些不同创建二叉树函数:void CreateBiTree(BiTree* p){ char c, s; (*p) = (BiTree)malloc(sizeof(BiTNode));//申请空间初始化 c = getchar(); s = c; c = getchar(); (*p)->LChild = NULL; (*p)->RC..原创 2021-05-19 11:48:43 · 390 阅读 · 0 评论 -
西北工业大学noj数据结构012以三元组表为存储结构实现矩阵相加
这道题和实验里面的一道题很像,详见我的博客稀疏矩阵的加法。这道题实现两个矩阵的加法。笔者采用了结构体数组的定义形式存储矩阵。同时需要注意输出时候的顺序,还有当加和后的结果为零时删除这个节点。要说的都在注释里,话不多说上代码:#include<stdio.h>#include <stdlib.h>#define ok 1#define error 0#define max 1000typedef struct{ int hang; int lie;..原创 2021-04-27 11:43:27 · 457 阅读 · 0 评论 -
西北工业大学数据结构noj011循环右移(耿5.2)
这道题考察数组应用,难度不大,我们利用循环队列做,不过用最简单的一维数组也可以做,而且更加简单。话不多说上代码#include<stdio.h>#include <stdlib.h>#define ok 1#define error 0typedef struct//定义循环队列{ int *data;//定义一个int数组 int front;//这里的指针根本不是指针,是表示元素的位置的数字 int rear; int lengt..原创 2021-04-27 11:15:58 · 531 阅读 · 0 评论 -
西北工业大学数据结构010k阶斐波那契数列.(严3.32)
这道题一开始把我坑惨了,我把它当成斐波那契数列做,结果做了半天WA(wonderful answer)。后来发现是k阶斐波那契数列才迷途知返。简单介绍一下k阶斐波那契数列:一个数列的前k-1项都为0,第k项为1,第k+1项开始后面的每一项都等于前面k项之和。即我们熟悉的斐波那契数列为2阶斐波那契数列。搞明白这个之后只需要设置一个长度为k的循环队列,然后计算出k阶斐波那契数列每一项的值,如果是合理范围就进队,最后把队列输出就可以了。话不多说上代码:#include<stdio.h>..原创 2021-04-25 22:06:56 · 547 阅读 · 2 评论 -
西北工业大学noj数据结构实验004稀疏矩阵的加法
这道题实现两个稀疏矩阵的加法。笔者采用了结构体数组的定义形式存储矩阵。同时需要注意输出时候的顺序,还有当家和后的结果为零时删除这个节点。要说的都在注释里,话不多说上代码:#include<stdio.h>#include <stdlib.h>#define ok 1#define error 0#define max 1000typedef struct{ int hang; int lie; int data;}seq;typedef ..原创 2021-04-23 18:09:53 · 1327 阅读 · 0 评论 -
西北工业大学noj数据结构实验003稀疏矩阵转置
矩阵转置没什么好说的,都在注释里了,上代码:#include<stdio.h>#include <stdlib.h>#define ok 1#define error 0#define max 1000typedef struct{ int hang; int lie; int data;}seq;void zhuanzhi(seq zzj[],int j)//矩阵转置,i个元素{ int i; for( i=0;i&..原创 2021-04-18 17:22:21 · 1368 阅读 · 1 评论 -
西北工业大学noj数据结构表达式括号匹配(严3.19)
这道题要求我们判断输出的一个字符串中的括号是否符合运算规律。可以运用栈的思想。如果一个括号是左括号就入栈,如果输出一个右括号就将它和栈头的左括号对比,符合就出栈(相当于消掉)。最后如果还有没消掉的括号就是不符合规定。话不多说上代码:#include<stdio.h>#include<stdlib.h>#include<string.h>#define max 1000#define ok 1#define error 0typedef struct{..原创 2021-04-09 00:15:39 · 4202 阅读 · 12 评论 -
西北工业大学noj数据结构 LOCATE操作(严2.38)
这道题大概思路为,建立一个双向链表,每个结点多加一个freq域。创建一个locate函数,循环调用n次。最后用一个反向冒泡排序将链表输出。话不多说上代码:#include <stdio.h>#include <stdlib.h>typedef struct DNode{char data;int freq;//多增加;了一个freq域struct DNode *pre,*next;}DNode,*DoubleList;void input (char *ep)/.原创 2021-04-07 13:08:11 · 912 阅读 · 4 评论 -
西北工业大学noj数据结构009循环队列(严3.30)
首先这个题非常的奇怪,它明明说输出yes或者no但是在输入样例里面直接输入yes或者no,并且评阅的时候yes或者no也是当成输入项,应该是题目有点问题。抛开这个小瑕疵,这道题考察的是循环队列的建立插入删除等操作。需要注意的几点有:1.建立循环链表的时候尽量多申请一个空间用于判空;2.删除操作不是只删除一项,由于队列只能从一边删除,所以删除时需要将比这个元素先入队的所有元素都删除;话不多说上代码:#include<stdio.h>#include <stdlib.h>..原创 2021-04-15 12:05:49 · 892 阅读 · 3 评论 -
西北工业大学noj数据结构008逆波兰式(耿3.8)
做这道题之前需要先清楚逆波兰式的概念逆波兰式是计算机常用的表达式语言,借用知乎大佬的讲解:逆波兰表达式,英文为 Reverse Polish notation,跟波兰表达式(Polish notation)相对应。之所以叫波兰表达式和逆波兰表达式,是为了纪念波兰的数理科学家 Jan Łukasiewicz。其在著作中提到:我在1924年突然有了一个无需括号的表达方法,我在文章第一次使用了这种表示法。平时我们习惯将表达式写成 (1 + 2) * (3 + 4),加减乘除等运算符写在中间,因此称呼为中缀..原创 2021-04-13 21:34:30 · 1863 阅读 · 1 评论