随笔分类 - 数据结构 学习笔记
摘要:一、实现主要功能为:1、输入模式串、目标串2、根据目标串生成next[]和nextval[]数组3、根据next[]或者nextval[]进行匹配。二、程序截图:三、代码: 1 #include 2 #include 3 #include 4 #include 5 using na...
阅读全文
摘要:实验9图的基本操作实验目的1.掌握图的各种存储结构,特别要熟练掌握邻接矩阵和邻接表存储结构。2.遍历是图各种应用的算法的基础,要熟练掌握图的深度优先遍历和广度优先遍历算法,复习栈和队列的应用。实验内容程序1/*定义邻接矩阵类型*/typedefintadjmatrix[n+1][n+1];/*建立图...
阅读全文
摘要:实验7二叉树基本操作实验目的1.熟悉二叉树结点的结构和对二叉树的基本操作。2.掌握对二叉树每一种操作的具体实现。3.学会利用递归方法编写对二叉树这种递归数据结构进行处理的算法。实验内容该程序的功能是实现二叉树结点的类型定义和对二叉树的基本操作。该程序包括二叉树结构类型以及每一种操作的具体的函数定义和...
阅读全文
摘要:实验6数组的建立和使用实验目的1.掌握C语言中数组的类型定义。2.掌握数组的建立和使用的特点。实验内容程序1在计算机上以字符串的形式输入了两个任意长的整数,编写求这两个整数的积的程序。程序2若矩阵Am´n中的某个元素aij是第i行的最小值,同时又是第j列中的最大值,则称此元素为该矩阵中的一个马鞍点。...
阅读全文
摘要:【7.4】 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 100 6 7 typedef struct node{ 8 char data; 9 node *lchild;10 ...
阅读全文
摘要:【6.5】 1 #include 2 3 using namespace std; 4 #define MAXN 100 5 #define N 4 6 #define M 4 7 int x,y,num; 8 int a[MAXN][MAXN] = { 9 {0,2,3,4},10 ...
阅读全文
摘要:【5.1】 1 #include 2 #define MAXSIZE 1000 3 double GetAve(int a[],int n) //求数组a[]前n个数的平均数 4 { 5 if(n==1) 6 return a[1]; 7 return (a[...
阅读全文
摘要:【4.1】 1 // 4.1 2 #include 3 #define MAXSIZE 1000 //字符串最大长度 4 int pattern_index(char t[],char s[]) //BF算法 5 { 6 int i,j; 7 for(i=0;s[i];...
阅读全文
摘要:实验5表达式求值实验目的1.会定义顺序栈和链栈的结点类型。2.掌握栈的插入和删除结点在操作上的特点。3.熟悉对栈的一些基本操作和具体的函数定义。实验内容程序1该程序的功能是实现顺序栈的定义和操作。该程序包括定义的栈结构类型以及对每一种栈操作的具体的函数定义和主函数。/*定义DataType为int类...
阅读全文
摘要:【3.2.2】 1 #include 2 using namespace std; 3 int islegal(char s[]) 4 { 5 int i,pushnum = 0,popnum = 0; 6 for(i=0;s[i];i++){ 7 switch(s...
阅读全文
摘要:实验要求:实验4 链表其它操作实验目的1.熟悉对单链表的一些其它操作。2.掌握循环链表和双链表的一些操作,理解与单链表操作的不同。实验内容程序1设单链表L是一个非递减有序表,写一算法将x插入其中后仍保持L的有序性。设计要求:在程序中构造三个子程序分别为LinkedList LinkedListCreat( ) /*建立链表*/void InsertList(LinkedList L,int x) /*插入结点*/void print(LinkedList L); /*输出链表中...
阅读全文
摘要:实验3链表基本操作实验目的1.定义单链表的结点类型。2.熟悉对单链表的一些基本操作和具体的函数定义。3.通过单链表的定义掌握线性表的链式存储结构的特点。4.掌握循环链表和双链表的定义和构造方法。实验内容该程序的功能是实现单链表的定义和操作。该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。程序中的单链表(带头结点)结点为结构类型,结点值为整型。/*定义DataType为int类型*/typedefintDataType;/*单链表的结点类型*/typedefstructLNode{DataTypedata;structLNode*next;}LNode,*LinkedList;
阅读全文
摘要:实验要求:实验2 顺序表其它操作实验目的1.进一步掌握在线性表的顺序存储结构上的一些其它操作。实验内容程序1已知一个线性表,用另辟空间和利用原表两种方法把线性表逆置。设计要求:在程序中构造三个子程序分别为SeqList reverse(SeqList A) /*顺序表的就地逆置 */void ListTraverse(SeqList L) /* 遍历顺序表 */SeqList create(int n) /* 建立顺序表 */ 程序2已知两个非递减有序的线性表LA和LB,将LA和LB合并成一个线性表LC,LC也非递减有...
阅读全文
摘要:实验要求:实验1 顺序表基本操作实验目的1. 熟悉C语言的上机环境,掌握C语言的基本结构。2. 会定义线性表的顺序存储结构。3. 熟悉对顺序表的一些基本操作和具体的函数定义。注意事项在做第一次“数据结构”课程实验之前,要在硬盘上建立好自己的工作目录,专门来存储你所做的实验程序及相关信息,以后每次做实验都采用这个目录。实验内容该程序的功能是对元素类型为整型的顺序表进行一些操作。该程序包括顺序表结构类型的定义以及对顺序表操作的具体的函数定义和主函数。/* 定义DataType为int类型 */typedef int DataType; /*顺序表存储空间的总分配量*/#define M...
阅读全文
摘要:【2.4】设计一个算法,将一个带头节点的数据域依次为a1,a2,……,an(n>=3)的单链表的所有节点逆置,即第一个节点的数据域变为an,……,最后一个节点的数据域变为a1。 思路:我是直接在原链表上操作,当然也可以创建一个数组存储链表的数据,然后再倒序放回原链表。 答案: 1 void in...
阅读全文