- 博客(35)
- 资源 (1)
- 收藏
- 关注
转载 编译工程——词法分析
词法分析主要是读入源程序的输入字符,区分成词素,生成词法单元序列,序列中的每个词法单元对应一个词素。此外,它还会完成其他的任务,如过滤掉源程序中的注释和空白(空格、换行符、制表符以及在输入中用于分割词法单元的其他字符);以及将编译器生成的错误消息与源程序中的位置联系起来。词法单元:由词法单元名和可选的属性组成;词法单元名可以是特定关键词,或者是代表标识符、数字常量、字符常量等。模式:一个词法单元的词素所具有的所有可能的形式;如果是词法单元是关键字,那就是这个关键字的字符序列;对于例如标识符,那么就是更复
2022-05-16 11:28:34
987
原创 数据结构NOJ——24二叉排序树的判别
#include<iostream>using namespace std;#define MAX 20typedef struct BiNode{ int data; struct BiNode* lchild, * rchild;}BiNode,*BiTree;//先序建立二叉树void CreatTree(BiTree& T) { int ch; cin >> ch; if (ch == -1) T = NULL; else { if(!.
2021-09-11 21:54:00
172
原创 数据结构NOJ——23构造哈希表
#include<iostream>using namespace std;#define SIZE 11#define NULLKEY 0typedef struct { int key; int flag;//计算地址的次数}RecordType,*HashTable;void HashSreach(HashTable ht,int data[]) { for (int i = 0; i <SIZE; i++) { ht[i].key = 0; ht.
2021-09-11 21:52:53
196
原创 数据结构NOJ——20基于图的广度优先搜索策略
#include<iostream>#include<queue>//使用了STLusing namespace std;typedef int VertexType;#define NUM 100//表头结点typedef struct HNode { VertexType data; struct ArcNode* firstarc;}HNode,AdjList[NUM];//边结点typedef struct ArcNode { int AdjV.
2021-09-05 19:46:07
124
原创 数据结构NOJ——19基于图的深度优先搜索策略
#include<iostream>using namespace std;typedef int VertexType;#define NUM 100//表头结点typedef struct HNode{ VertexType data; struct ArcNode* firstarc;}HNode, AdjList[NUM];//边结点typedef struct ArcNode { int Adjvex;//边结点的位置 struct ArcNode* ne.
2021-09-05 19:45:17
209
原创 数据结构NOJ——18建立二叉树的二叉链表
//已知前序和中序输出后序#include<iostream>using namespace std;typedef char ElemType;typedef struct BiNode { ElemType data; struct BiNode* lchild, * rchild;}BiNode, * BiTree;//中序先序建立二叉树void CreatBiTree(char PreOrder[],char InOrder[],int i,int j,int k.
2021-09-05 19:44:27
202
原创 数据结构NOJ——17输出以二叉树的表示的算术表达式
#include<iostream>using namespace std;typedef char ElemType;typedef struct BiNode { ElemType data; struct BiNode* lchild, * rchild;}BiNode, * BiTree;//先序建立BiNode* CreatBiTree() { char ch = getchar(); BiNode* p; if (ch != '#') { p = (.
2021-09-05 19:43:40
87
原创 数据结构NOJ——16计算二叉树叶子节点数目
#include <iostream>using namespace std;typedef struct BiNode { char data; struct BiNode* lchild, * rchild;}BiNode, * BiTree;void CreatBiTree(BiTree &T) {//先序建立二叉树 char ch = getchar(); if (ch == '#') T = NULL; else { if (!(T = (BiTre.
2021-09-05 19:43:05
222
原创 数据结构NOJ——15建立二叉树的二叉链表存储结构
#include <iostream>using namespace std;typedef struct BiNode { char data; struct BiNode* lchild, * rchild;}BiNode, * BiTree;void CreatBiTree(BiTree T) { T->lchild = T->rchild = NULL; char c1, c2; c1 = getchar(); c2 = getchar(); if.
2021-09-05 19:42:27
370
原创 数据结构NOJ——14求广义表深度
#include<iostream>using namespace std;typedef int ElemType;//结构定义typedef struct lnode { int tag;//结点类型标识,0为原子结点,1为子表 union { ElemType data; struct lnode* sublist;//指向子表 } val; struct lnode* link;//指向下一元素}GLNode,*GList;GLNode* CreatG.
2021-09-05 19:41:17
212
原创 数据结构NOJ——12三元组表实现矩阵相加
#include<iostream>using namespace std;typedef int ElemType;#define MAXSIZE 100//三元组顺序表定义typedef struct { int r; int c; ElemType d;}TupNode;//三元组定义typedef struct { int nums; TupNode* data;}TSLis, * TSqList;//三元组顺序表定义void CreatTSList..
2021-08-18 18:06:22
216
原创 数据结构——数组、广义表
数组特点数组的特点:结构固定,定义后维数和维界不变。数组可以是多维,但存储空间是一维的,所以重点在解决映射关系。注意数组中元素位置的计算。三维数组按页优先的顺序存储特殊矩阵的压缩存储1.对称矩阵压缩为只用存储下/下三角(包括对角线元素)个元素←→ n(n+1)/2元素a[i][j] ←→ b[k]数组下标0开始2.三角矩阵的压缩n²个元素←→ n(n+1)/2+1元素,常数c共享一个元素存储空间故+13.对角矩阵的压缩存储当b=1时称为三对角矩阵。其压缩地址计算公式如下:k=2
2021-08-18 18:04:47
221
原创 数据结构NOJ——11循环右移
#include<iostream>#include<stdlib.h>#include<malloc.h>using namespace std;typedef int ElemType;typedef int Status;#define ERROR -1#define OK 0typedef struct { ElemType* base; int front; int rear;}SQueue, * SqQueue;void I.
2021-08-11 10:28:55
159
原创 数据结构NOJ——10K阶斐波那契数列
#include<iostream>#include<stdlib.h>#include<malloc.h>using namespace std;typedef int ElemType;typedef int Status;#define ERROR -1#define OK 0typedef struct { ElemType* base; int front; int rear; int temp;//队头的直接后继}SQueue.
2021-08-11 10:28:11
144
原创 数据结构NOJ——08逆波兰式
#include<iostream>#include<string>using namespace std;typedef char ElemType;#define ERROR 1#define OK 0#define MAXSIZE 100#define INCREASE 100typedef struct SqStack{ ElemType* base; ElemType* top; int stacksize;}SqStack,*SqStac.
2021-08-10 15:52:37
140
原创 数据结构NOJ——07表达式括号匹配
#include <iostream>#include<string>using namespace std;typedef char ElemType;typedef int Status;#define MAXSIZE 100#define INCREASE 100#define ERROR -1#define OK 0typedef struct { ElemType* base; ElemType* top; int stacksize;}Sq.
2021-08-10 15:51:26
265
原创 数据结构——队列
概念队列简称队,它也是一种运算受限的线性表,其限制仅允许在表的一端进行插入,而在表的另一端进行删除。把进行插入的一端称做队尾(rear),进行删除的一端称做队首或队头(front)——先进先出。顺序存储定义队列的顺序存储结构typedef struct { QElemType* base;//初始化的动态分配存储空间 int front;//队头元素下标,头指针 int rear;//队尾元素下标,尾指针}SqQueue;//不是指针类型初始:front=rear入队:base[re
2021-08-10 15:42:01
143
原创 数据结构——栈
概念栈是一种只能在一端进行插入或删除操作的线性表。表中允许进行插入、删除操作的一端称为栈顶。(后进先出)顺序栈定义栈的顺序存储结构(容易产生溢出)typedef struct{ SElemType* base; SElemType* top; int stacksize;//栈可用最大容量}SqStack;另外附设top、base指针,指示栈顶元素和栈底元素在顺序栈中的位置,通常top指示真正的栈顶元素之上的下标地址,stacksize表示栈可用的最大容量,指向同一数组的指针相减得到元
2021-08-10 15:32:01
240
原创 数据结构NOJ——06LOCATED操作
#include<iostream>using namespace std;typedef char ElemType;typedef struct DLNode { ElemType data; struct DLNode* pre, * next; int freq = 0;}DLNode,*DLinkList;//尾插法建立双向循环链表void InitialList(DLinkList& L,int n) { L = new DLNode; DLNo.
2021-08-10 15:19:55
90
原创 数据结构NOJ——05单链表的删除
#include<iostream>using namespace std;typedef int ElemType;typedef struct LNode { ElemType data; struct LNode* next;}LNode,*LinkList;void Create_LinkList(LinkList& L,int n) { L = new LNode; L->next = NULL; LNode* r; r = L; for .
2021-08-10 15:18:50
331
原创 数据结构NOJ——04单链表的归并
#include<iostream>using namespace std;typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode* next;}LNode,*LinkList;//尾插法建立单链表void Create_LinkList(LinkList& L,int n) { L = (LinkList)malloc(sizeof(ElemType)); L->ne.
2021-08-10 15:17:16
175
原创 数据结构NOJ——03顺序表的删除
#include<iostream>using namespace std;typedef int ElemType;#define MAXSIZE 10typedef struct { ElemType* data; int length;}SqList;void Create_Sq(SqList& L) { cin >> L.length; L.data = (ElemType*)malloc(L.length * sizeof(ElemTyp.
2021-08-10 15:16:06
311
原创 数据结构NOJ——02线性表的就地逆置
#include<iostream>using namespace std;#define MAXSIZE 100typedef int ElemType;//数组存储typedef struct { ElemType *data; int length;}SqList;void Create_Ar(SqList& A) { cin >> A.length; A.data = (ElemType*)malloc(A.length * sizeof.
2021-08-10 15:15:09
220
原创 数据结构NOJ——01顺序表的插入运算
#include<iostream>;using namespace std;#define MAXSIZE 100typedef int ElemType;typedef struct { ElemType* data; int length;}SqList;void CreatList(SqList& L) { L.data = (ElemType*)malloc(MAXSIZE*sizeof(ElemType));//注意数组也要分配空间 cin >
2021-08-10 15:13:18
128
原创 数据结构——链表
文章目录一、单向链表概念定义基本操作1、一、单向链表概念链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。除了存储元素本身的信息外,还要存储其直接后继信息,因此,每个节点都包含两个部分,第一部分称为链表的数据区域,用于存储元素本身的数据信息,它不局限于一个成员数据,也可是多个成员数据,第二部分是一个结构体指针,称为链表的指针域,用于存储其直接后继的节点信息。定义type
2021-03-14 11:01:45
238
原创 数据结构——顺序表
文章目录一、顺序存储二、定义三、基本操作静态表1、初始化2、销毁顺序线性表3、将顺序表重置为空表4、判断顺序表是否为空表5、求顺序表的长度6、在下标为 p 的位置上插入元素 x7、删除下标为p的元素8、求x在顺序表中的下标位置9、求顺序表中第p个(即下标为p-1)的元素的值动态表1、顺序表的初始化3、删除下标为p的元素4、两个顺序表求并集5、两个顺序表求交集6、两个顺序表元素合并排序一、顺序存储将“具有 ‘一对一’ 逻辑关系的数据按照次序连续存储到一整块物理空间上”的存储结构就是顺序存储结构。顺序表存储
2021-03-12 22:37:45
817
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人