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.pswp.cn/news/164362.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164362.shtml
英文地址,請注明出處:http://en.pswp.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…