数据结构
LeBron James m
这个作者很懒,什么都没留下…
展开
-
线索二叉树的构造等问题
//线索二叉树的存储结构描述如下:typedef struct ThreadNode { char data;//数据元素 struct ThreadNode* lchild, * rchild;//左右孩子指针; int ltag, rtag;//左右线索标志 用0代表有孩子,}ThreadNode,*ThreadTree;1.中序线索二叉树的构造ThreadNode* pre = NULL;//定义一个全局变量pre,用来表示访问结点的前一个结点void visit(ThreadNod原创 2020-09-21 16:10:20 · 210 阅读 · 0 评论 -
单链表的经典问题4
单链表中结点类型定义如下:typedef struct link { int data; link* next;}node,*linklist;设A和B是两个单链表(带头节点),其中元素递增有序,设计一个算法从A和B中公共元素产生单链表C,要求不破坏A B的结点void fun3(linklist& A, linklist& B) { //设A和B是两个单链表(带头节点),其中元素递增有序,设计一个算法从A和B中公共元素产生单链表C,要求不破坏A B的结点 node* p原创 2020-09-13 14:28:05 · 824 阅读 · 0 评论 -
单链表经典问题3
单链表中节点类型定义如下:typedef struct link { int data; link* next;}node,*linklist;1.试编写在带头节点的单链表L中删除一个最小值节点的高效算法(假设最小值节点时唯一的)void delete_MinX(linklist& L) {//试编写在带头节点的单链表L中删除一个最小值节点的高效算法(假设最小值节点时唯一的) node* min_pre = L;//记录最小节点的前一个节点 node* min_p=L->ne原创 2020-09-13 14:22:36 · 637 阅读 · 0 评论 -
单链表的经典问题2
单链表中节点类型定义如下:typedef struct link { int data; link* next;}node,*linklist;1.将一个头指针为head且不带头节点的单链表改造为一个含头节点且头指针为head的单循环链表。void fun(linklist& head) {//将一个头指针为head且不带头节点的单链表改造为一个含头节点且头指针为head的单循环链表。 node* s = (node*)malloc(sizeof(node*));//先增加头节点 s原创 2020-09-09 17:30:18 · 565 阅读 · 0 评论 -
单链表的操作(不带头节点)
单链表的操作(以下均为不带头节点的操作)单链表中节点类型的描述如下typedef struct LNode {//定以单链表的节点类型 int data;//数据域 struct LNode* next;//指针域}LNode,*LinkList;单链表的基本操作bool InitList(LinkList& L) //初始化一个单链表bool Empty(LinkList& L) //判断单链表是否为空bool ListInsert1(LinkList& L, i原创 2020-09-06 18:35:59 · 455 阅读 · 0 评论 -
单链表的操作(带头节点)
单链表的操作(带头节点)typedef struct LNode{//声明一个结构体 int data; struct LNode* next;}LNode,*LinkList;链表的各种具体操作函数bool InitList(LinkList& L)//链表的初始化bool Empty(LinkList& L)//判断链表是否为空int Length(LinkList& L)//求单链表的长度bool ListInsert(LinkList& L, int原创 2020-09-06 18:34:24 · 213 阅读 · 0 评论 -
求数组的最大值和次大值问题
求整形数组最大值和次大值问题#include<iostream>#include<string>using namespace std;int main(){ int a[] = { 23,23,8,2,0,24,12,24 }; int len = sizeof(a) / sizeof(a[0]); int i, max1 = 0, ma...原创 2020-02-10 15:59:53 · 609 阅读 · 0 评论 -
循环单(双)链表
循环单链表(带头节点)单链表的节点类型描述如下:typedef struct LNode {//定义单链表节点类型 int data;//数据域 struct LNode* next;//指针域}LNode,*LinkList;循环单链表的基本操作实现:(其他的插入,删除操作类似于单链表)bool InitList(LinkList& L) {//初始化一个循环单链表bool Empty(LinkList L) {//判断链表是否为空bool isTail(LinkList L,原创 2020-09-08 18:43:54 · 588 阅读 · 0 评论 -
单链表的经典问题
使用尾插法(头插法)创建一个带头节点(不带头节点)的单链表单链表中的节点类型描述如下:typedef struct link { int data; link* next;}node,*linklist;使用尾插法(头插法)创建一个带头节点的单链表void Creat_list_Head(linklist& L) {//创建一个带头节点的单链表 //尾插法 /*int x; L = (node*)malloc(sizeof(node*));//先创建一个头节点 L->原创 2020-09-08 18:43:03 · 494 阅读 · 0 评论 -
双向链表基本操作的实现(带头节点)
双向链表的基本操作实现(含头节点)typedef struct DNode {//定义双链表的节点类型 int data;//数据域 struct DNode* prior, * next;//前驱和后继指针}DNode,*DLinkList;以下几种操作bool InitDLinkList(DLinkList& L) {//初始化双链表bool Empty(DLinkList L) {//判断双链表是否为空bool InsertNextDNode(DNode* p, DNode*原创 2020-09-06 20:29:06 · 393 阅读 · 0 评论