408-数据结构-代码题

2014

2014 二叉树(链式存储)

#include<iostream>
#include<bits/stdc++.h>
using namespace std;typedef struct Node{struct Node *left;struct Node *right;int high=0;double weight; 
}node;double sum=0;void visit(node *t){int lop=0;if(t->left != NULL){t->left->high = t->high+1;lop = 1;}if(t->right != NULL){t->right->high = t->high+1;lop = 1;}if(lop == 0){sum += t->weight * t->high;}
}void dfs(node *t){if(t != NULL){cout << t->weight << endl;visit(t);dfs(t->left);dfs(t->right);}
}node* buildnode(int w){node* tmp = (node *)malloc(sizeof(node));
//	tmp->high = 0;tmp->weight = w;tmp->left = tmp->right = NULL;return tmp;
}void first(node *t){if(t != NULL){//	visit(t);cout << t->weight << "  " << t->high << endl;first(t->left);first(t->right);}// also 
//	if(t == NULL)  return; 
//	//	visit(t);
//	cout << t->weight << endl;
//		
//	first(t->left);
//	
//	first(t->right);
//	
}int main(){node* n1 = buildnode(1);node* n2 = buildnode(2);node* n3 = buildnode(3);node* n4 = buildnode(4);node* n5 = buildnode(5);node* n6 = buildnode(6);node* n7 = buildnode(7);n1->left = n2;n1->right = n3; n2->left = n4;n2->right = n5;n3->right = n6;n4->right = n7;dfs(n1);cout << "sum = " <<  sum << endl; first(n1);return 0;
} 

2017

2015 单链表(带头结点)

#include<iostream>
#include<cstring>
using namespace std;typedef struct Node{int data;struct Node *next; 
}node,*list;const int N = 100010;
int a[N];
void func(Node *head){node *p;node *r;p = head;while(1){int x = p->next->data;if(x < 0) x = -1*x;if(a[x] == 0){a[x] = 1;p = p->next;}else{r = p->next;p->next = r->next;free(r);}if(p->next == NULL) break;}
}node* create(int n){node* p;p = (node*)malloc(sizeof(node));p->data = n;p->next = NULL;
}void func2(Node *head){node *p;p = head;while(p->next != NULL){cout << p->next->data << " ";p = p->next;}return;
}int main(){node *head;node *s1;node *s2;node *s3;node *s4;head = create(-1);s1 = create(2);s2 = create(2);s3 = create(1);s4 = create(1);head->next = s1;s1->next = s2;s2->next = s3;s3->next = s4;// bianlifunc2(head); func(head);cout << endl;func2(head);return 0;
}

2017

2017 二叉树中序遍历

#include<iostream>using namespace std;typedef struct Node{char data;struct Node *left, *right;
}node;void visit(node *t){cout << t->data << " ";
}void bianli(node *t,int h){if(t != NULL){// 根 和 叶子 if(h > 0 && t->left!=NULL && t->right!=NULL) cout << "(";bianli(t->left,h+1);visit(t);bianli(t->right,h+1);if(h > 0 && t->left!=NULL && t->right!=NULL) cout << ")";}	
}node* create(char data){node* s;s = (node *)malloc(sizeof(node));s->data = data;s->right = NULL;s->left = NULL;return s;
}int main(){node *s1 = create('*');node *s2 = create('+');node *s3 = create('4');node *s4 = create('-');node *s5 = create('3');node *s6 = create('2');node *s7 = create('1');s1->left = s2;s1->right = s3;s2->left = s4;s2->right = s5;s4->right = s6;s4->left = s7;bianli(s1,0);return 0;	
} 

2019

2019 链表(快慢指针、反转链表、链表重排)

#include<iostream>
#include<cstring>using namespace std;typedef struct Node{int data;Node *next;
}node;node* create(int data){node *n = (node *)malloc(sizeof(node));n->data = data;n->next = NULL;return n;
}void print(node *head){node* p;p = head;while(p->next != NULL){cout << p->next->data << " ";p = p->next;}cout << endl;
}void reverse(node *head){node *p;p = head->next;head->next = NULL;while(p != NULL){node *t = p->next;p->next = head->next;head->next = p;p = t;}
}void change(node *head){node *q, *p;// 1. 快慢指針 來确定中间位置q = head;p = head;while(q->next != NULL){p = p->next;q = q->next;if(q->next != NULL) q = q->next;} //	cout << "## " << q->data << " " << p->data << endl;// 2. 反转链表// 头插法 头就是 preverse(p);//	cout << "p:  " << p->data << endl;//	node *h;
//	h = p;
//	h->next = NULL;
//	p = p->next;
//	while(p!=NULL){
//		node *t = p->next;
//		p->next = head->next;
//		h->next = p;
//		p = t;
//	}//	cout << "T: ";
//	print(head);// 3. 按题目要求进行插入node *f = head->next;node *r = p->next;p->next = NULL;//	r = r->next;
//	if(r->next == NULL)  cout << "!!!!!!!!!!!!!!!!!!";
//	cout << "r:  " << r->data << endl;while(r!=NULL){node* t2 = r->next;r->next = f->next;f->next = r;f = r->next; r = t2;} }int main(){node* head = create(-1);node* n1 = create(1);node* n2 = create(2);node* n3 = create(3);node* n4 = create(4);node* n5 = create(5);head->next = n1;n1->next = n2;n2->next = n3;n3->next = n4;n4->next = n5;n5->next = NULL;// n1->n2->n3->n4->n5print(head);//	reverse(head);//	print(head);change(head);print(head);return 0;
}

模拟题1

输出二叉树任意节点到根节点的路径(链式存储)

#include<iostream>
#include<cstring>using namespace std;typedef struct Node{int num;struct Node *left, *right;struct Node *front;
}node;void visit(node *t){if(t->left != NULL){t->left->front = t;}if(t->right != NULL){t->right->front = t;}
}void first(node* t){if(t!=NULL){visit(t);cout << t->num << endl;first(t->left);first(t->right);}
}void print(node *t){cout << "the route is ";while(1){cout << t->num << " ";t = t->front;if(t == NULL) break;}cout << endl;
}node* create(int num){node* s;s = (node *)malloc(sizeof(node));s->num = num;s->front = NULL;s->right = NULL;s->left = NULL;return s;
}int main(){node *s1 = create(1);node *s2 = create(2);node *s3 = create(3);node *s4 = create(4);node *s5 = create(5);node *s6 = create(6);node *s7 = create(7);s1->left = s2;s1->right = s3;s2->left = s4;s2->right = s5;s3->left = s6;s4->left = s7;first(s1);print(s7);return 0;	
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/164362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法刷题-动态规划2(继续)

算法刷题-动态规划2 珠宝的最高价值下降路径最小和使用最小花费爬楼梯整数拆分 珠宝的最高价值 题目 大佬思路 多开一行使得代码更加的简洁 移动到右侧和下侧 dp[ i ][ j ]有两种情况&#xff1a; 第一种是从上面来的礼物最大价值&#xff1a;dp[ i ][ j ] dp[ i - 1 ][ j ]…

【CCF-PTA】第03届Scratch第02题 -- 计算天数

计算天数 【题目描述】 一年有 365 天还是有 366 天呢&#xff1f;要看这一年是不是闰年。有个计算方法可以帮助我们判断&#xff0c;那就是闰年能够除尽 4 但不能除尽 100 或者能够除尽 400 的年份。如果这一年是闰年&#xff0c;2 月份的天数就是 29 天。小明决定编写一个程…

排序算法--希尔排序

实现逻辑 ① 先取一个小于n的整数d1作为第一个增量&#xff0c;把文件的全部记录分成d1个组。 ② 所有距离为d1的倍数的记录放在同一个组中&#xff0c;在各组内进行直接插入排序。 ③ 取第二个增量d2小于d1重复上述的分组和排序&#xff0c;直至所取的增量dt1(dt小于dt-l小于……

JSP:Servlet

Servlet处理请求过程 B/S请求响应模型 Servlet介绍 JSP是Servlet的一个成功应用&#xff0c;其子集。 JSP页面负责前台用户界面&#xff0c;JavaBean负责后台数据处理&#xff0c;一般的Web应用采用JSPJavaBean就可以设计得很好了。 JSPServletJavaBean是MVC Servlet的核心…

【实验笔记】C语言实验——降价提醒机器人

降价提醒机器人 题目&#xff1a; 小 T 想买一个玩具很久了&#xff0c;但价格有些高&#xff0c;他打算等便宜些再买。但天天盯着购物网站很麻烦&#xff0c;请你帮小 T 写一个降价提醒机器人&#xff0c;当玩具的当前价格比他设定的价格便宜时发出提醒。 输入格式&#xf…

人工智能教程(一):基础知识

目录 前言 什么是人工智能&#xff1f; 教学环境搭建 向量和矩阵 前言 如果你是关注计算机领域最新趋势的学生或从业者&#xff0c;你应该听说过人工智能、数据科学、机器学习、深度学习等术语。作为人工智能系列文章的第一篇&#xff0c;本文将解释这些术语&#xff0c;并搭…

k8s部署-kuboard安装(工具kuboard-spary)

Kuboard-Spray Kuboard-Spray 是一款可以在图形界面引导下完成 Kubernetes 高可用集群离线安装的工具 配置要求 对于 Kubernetes 初学者&#xff0c;在搭建K8S集群时&#xff0c;推荐在阿里云或腾讯云采购如下配置&#xff1a;&#xff08;您也可以使用自己的虚拟机、私有云等…

HCIP --- HCIA(部分汇总)--- 点对点网络

抽象语言 --- 电信号 抽象语言 --- 编码 编码 --- 二进制 二进制 --- 电信号 处理电信号 OSI/RM ---- 开放式系统互联参考模型 --- 1979 --- ISO --- 国际标准化组织 核心思想 --- 分层 应用层 --- 提供各种应用程序&#xff0c;抽象语言转换成编码&#xff0c;人机交互…

Docker 命令详解

1. 容器生命周期管理 命令说明文档run创建一个新的容器并运行一个命令Docker run 命令start/stop/restart启动、停止、重启容器Docker start/stop/restart 命令kill杀掉一个运行中的容器Docker kill 命令rm删除一个或多个容器Docker rm 命令pause/unpause暂停 恢复容器中所有的…

Arm64版本的centos编译muduo库遇到的问题的归纳

环境&#xff1a;Mac m2 pro下的VMware虚拟机中Arm64 centos ./build.sh 执行后提示如下 cmake -DCMAKE_BUILD_TYPErelease -DCMAKE_INSTALL_PREFIX…/release-install-cpp11 -DCMAKE_EXPORT_COMPILE_COMMANDSON /root/package/muduo-master – Boost version: 1.69.0 – Co…

[git] 忽略已经提交的文件或文件夹

文件已经被Git跟踪 如果某个文件已经被Git跟踪过&#xff08;即已经添加到版本控制中&#xff09;&#xff0c;.gitignore文件对该文件将不起作用。您需要使用以下命令将该文件从Git中移除&#xff1a; git rm --cached 支持文件夹 -r <文件夹>

Flink Table API 读写MySQL

Flink Table API 读写 MySQL import org.apache.flink.connector.jdbc.table.JdbcConnectorOptions; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.table.api.DataTypes; import org.apache.flink.table.api.Envi…

投资房产的理由与好处,投资买房的方法与技巧

一、教程描述 本套买房教程&#xff0c;大小2.15G&#xff0c;共有23个文件。 二、教程目录 00.她23岁北漂月薪600&#xff0c;7年后50万在京买了第一套房&#xff0c;如今身价上千万.mpg 01.这个游戏&#xff0c;有些人输了所有钱&#xff0c;一辈子也不明白这个道理.mpg …

CSGO搬砖项目全面讲解 ,CSGO搬砖注意事项

steam/csgo搬砖第二课之如何选品 Steam/CSGO游戏搬砖全套操作流程之如何选品&#xff08;第二课&#xff09; 一个游戏只要能搬&#xff0c;只要体量不够大&#xff0c;很快就会货币价格暴跌&#xff0c;直接凉凉。市面上的能稳定手动搬砖的游戏越来越少。所以对于兼职赚点外快…

【Spring】 IoCDI

回顾 企业命名规范 大驼峰:BookDao(首字母都大写) 类名 小驼峰:bookDao(第一个字母小写) 方法名 蛇形:book_dao(小写下划线_) 数据库 串形:book-dao(小写连字符-) 项目文件夹 各种注解 学习Spring MVC, 其实就是学习各种Web开发需要⽤的到注解 a. RequestMapping: 路由…

[Linux] shell脚本的函数和数组

一、函数 1.1 函数的定义 函数是脚本的别名 作用&#xff1a;函数可以避免代码重复&#xff0c;可读性强&#xff0c;可以简化脚本。 格式&#xff1a;函数名&#xff08;&#xff09;{脚本} 1.2 如何使用函数 1.定义 2.调用 函数一定要先定义再使用 例子&#xff1a…

编译原理Lab1-用FLEX构造C-Minus-f词法分析器

HNU编译原理lab1实验–根据cminux-f的词法补全lexical_analyer.l文件&#xff0c;完成词法分析器。 本文没有添加任何图片&#xff0c;但是以复制输出的形式展现出来了实验结果。 实验要求&#xff1a; 根据cminux-f的此法补全lexical_analyer.l文件&#xff0c;完成词法分析…

国家超级计算济南中心低代码平台应用实践

摘要&#xff1a;文章主要介绍了济南超算使用低代码平台明道云解决了一系列业务问题&#xff0c;包括资产管理、人员与机构管理、流程制度管理等。通过明道云平台&#xff0c;济南超算成功地将不同部门的业务信息进行整合&#xff0c;提高了工作效率和管理水平。文章还强调了明…

计算机端口

前言 计算机端口&#xff08;Port&#xff09;是一种用于在计算机网络中标识特定服务或应用程序的机制。 端口是一个数字&#xff0c;范围从0到65535&#xff0c;用于将网络通信分配给不同的应用程序或服务。 在 Internet 协议套件&#xff08;TCP/IP&#xff09;中&#xff0…