Stack.h
#ifndef STACK_H_H #define OK 0 #define ERROR -1 typedef struct Point { int x; int y; }Point; typedef struct Stack { Point pt; //保存座標點 struct Stack *next; }*LinkStack; int init_linkStack(LinkStack*); int make_node(Stack**); int clear_linkStack(LinkStack); int destroy_linkStack(LinkStack*); int push(LinkStack, Point); int pop(LinkStack, Point*); int create_linkStack(LinkStack); int print_linkStack(LinkStack); int get_top(LinkStack, Stack**); int stack_empty(LinkStack); #endif
Stack.cpp
#include<stdio.h> #include<stdlib.h> #include "Stack.h" int init_linkStack(LinkStack *lstack) { if(!((*lstack) = (LinkStack)malloc(sizeof(Stack)))) return ERROR; (*lstack)->pt.x = 0; (*lstack)->pt.y = 0; (*lstack)->next = NULL; return OK; } int make_node(Stack **node) { if(!((*node) = (LinkStack)malloc(sizeof(Stack)))) return ERROR; (*node)->pt.x = 0; (*node)->pt.y = 0; return OK; } int clear_linkStack(LinkStack lstack) { if(lstack == NULL || lstack->next == NULL) return ERROR; Stack *tmp = lstack->next; Stack *tmp1; while(tmp != NULL) { tmp1 = tmp; tmp = tmp->next; free(tmp1); } lstack->next = NULL; return OK; } int destroy_linkStack(LinkStack *lstack) { if((*lstack) == NULL) return ERROR; Stack *tmp; while((*lstack) != NULL) { tmp = *lstack; (*lstack) = (*lstack)->next; free(tmp); } (*lstack) = NULL; return OK; } int push(LinkStack lstack, Point pt) { if(lstack == NULL) return ERROR; Stack *node; if(make_node(&node)) return ERROR; node->pt = pt; node->next = lstack->next; lstack->next = node; return OK; } int pop(LinkStack lstack, Point *pt) { if(lstack == NULL || lstack->next == NULL) return ERROR; Stack *tmp; *pt = lstack->next->pt; tmp = lstack->next; lstack->next = tmp->next; free(tmp); return OK; } int create_linkStack(LinkStack lstack) { if(lstack == NULL || lstack->next != NULL) return ERROR; Point pt; printf("input x, y: "); scanf("%d,%d",&pt.x, &pt.y); while(0 != pt.x && 0 != pt.y) { push(lstack,pt); scanf("%d,%d",&pt.x, &pt.y); } return OK; } int print_linkStack(LinkStack lstack) { if(lstack == NULL || lstack->next == NULL) return ERROR; Stack *tmp = lstack->next; while(tmp != NULL) { printf("(%d,%d), ",tmp->pt.x, tmp->pt.y); tmp = tmp->next; } printf("/n"); return OK; } int get_top(LinkStack lstack, Stack **node) { if(lstack == NULL || lstack->next == NULL) return ERROR; *node = lstack->next; return OK; } int stack_empty(LinkStack lstack) { if(lstack == NULL) return ERROR; if(lstack->next == NULL) return true; return false; }
mg.h
#ifndef MG_H_H #define MAX_SIZE 10 #define OK 0 #define ERROR -1 int create_map(int map[MAX_SIZE][MAX_SIZE], int); int print_map(int map[MAX_SIZE][MAX_SIZE]); int maze_path(int map[MAX_SIZE][MAX_SIZE], Point, Point); #endif
mg.cpp
#include<stdlib.h> #include<stdio.h> #include<time.h> #include "Stack.h" #include"mg.h" int create_map(int map[MAX_SIZE][MAX_SIZE], int num) { //初始化地圖 for(int i = 0 ; i < MAX_SIZE ; i++) { for(int j = 0 ; j < MAX_SIZE ; j++) { if(j == 0 || i == 0 || j == MAX_SIZE - 1 || i == MAX_SIZE - 1) { map[i][j] = 1; } else map[i][j] = 0; } } //產生地圖障礙 srand(time(0)); while(num > 0) { int m = rand() % MAX_SIZE; int n = rand() % MAX_SIZE; map[m][n] = 1; num--; } return OK; } int print_map(int map[MAX_SIZE][MAX_SIZE]) { for(int i = 0 ; i < MAX_SIZE ; i++) { for(int j = 0 ; j < MAX_SIZE ; j++) printf("%d ",map[i][j]); printf("/n"); } return OK; } int maze_path(int map[MAX_SIZE][MAX_SIZE], Point start, Point end) { LinkStack lstack; Stack *node; init_linkStack(&lstack); Point people = start; push(lstack,people); do { //行走的路徑放在棧中 if(people.x == end.x && people.y == end.y) break; if(map[people.x][people.y + 1] != 1) { people.y += 1; push(lstack,people); //走過的路徑做下標記 map[people.x][people.y] = 1; } else if(map[people.x + 1][people.y] != 1) { people.x += 1; push(lstack,people); map[people.x][people.y] = 1; } else if(map[people.x][people.y - 1] != 1) { people.y -= 1; push(lstack,people); map[people.x][people.y] = 1; } else if(map[people.x - 1][people.y] != 1) { people.x -= 1; push(lstack,people); map[people.x][people.y] = 1; } else { //沒有路走,就回退 pop(lstack,&people); } }while(!stack_empty(lstack)); if(!stack_empty(lstack)) { while(!stack_empty(lstack)) { pop(lstack,&people); printf("(%d,%d) ", people.x, people.y); } printf("/n"); } else { printf("not found the outlet./n"); } return OK; }
Main.cpp
#include<stdio.h> #include<stdlib.h> #include "Stack.h" #include "mg.h" void main() { int map[MAX_SIZE][MAX_SIZE]; Point start; Point end; create_map(map,30); print_map(map); printf("input start point (x,y): "); scanf("%d,%d", &start.x, &start.y); printf("input end point (x,y): "); scanf("%d,%d", &end.x, &end.y); maze_path(map, start, end); }
本文分享自華爲雲社區《GaussDB SQL基本語法示例-CASE表達式》,作者:Gauss松鼠會小助手2。 一、前言 SQL是用於訪問和處理數據庫的標準計算機語言。GaussDB支持SQL標準(默認支持SQL2、SQL3和SQL4的主要
本文分享自華爲雲社區《【MySQL技術專欄】MySQL8.0直方圖介紹》,作者:GaussDB 數據庫。 背景 數據庫查詢優化器負責將SQL查詢轉換爲儘可能高效的執行計劃,但因爲數據環境不斷變化導致優化器對查詢數據瞭解的不夠充足,可能無法
每篇一句 大魔王張怡寧:女兒,這堆金牌你拿去玩吧,但我的銀牌不能給你玩。你要想玩銀牌就去找你王浩叔叔吧,他那銀牌多 前言 爲了講述好Spring MVC最爲複雜的數據綁定這塊,我前面可謂是做足了功課,對此部分知識此處給小夥伴留一個學
作者:vivo 互聯網數據庫團隊- Qiu Xinbo 本文主要通過圖示介紹了用主鍵進行分片查詢的過程,介紹了主鍵分頁查詢存在SQL性能問題,如何去創建高效的索引去優化主鍵分頁查詢的SQL性能問題 對於數據分佈不均
JSON簡介: JSON(Java Script Object Notation)是一種輕量級的數據交換格式,通常用於在不同系統之間傳輸數據。它基於 JavaScript 對象語法,但已成爲一種獨立於語言的格式。JSON 數據以鍵值對的形式
一、簡單介紹: CaffeineCache和Guava的Cache是應用廣泛的本地緩存。 在開發中,爲了達到降低依賴、提高訪問速度的目的。會使用它存儲一些維表接口的返回值和數據庫查詢結果,在有些場景下也會在分佈式緩存上再加上一層本地緩存,
作者:vivo 互聯網大前端團隊 - Ma Lian 本文主要描述了FileProvider,startAnyWhere實現,Parcel不對稱漏洞以及這三者結合產生的漏洞利用實戰,另外闡述了漏洞利用的影響和修復預防措施,這個漏洞波及了
Impala目前支持Hadoop中幾種常見的文件格式 Parquet 、 ORC 、 Text 、 Avro 、 RCFile 和 SequenceFile 。下面簡要說明各種格式的使用、限制和一些注意事項。 不同的文件格式有着不同的適用場
本文分享自華爲雲社區《GaussDB SQL基礎語法示例-BOOLEAN表達式》,作者:Gauss松鼠會小助手2。 一、前言 SQL是用於訪問和處理數據庫的標準計算機語言。GaussDB支持的SQL標準(默認支持SQL2、SQL3和SQL
Map是用於保存具有映射關係的數據集合,它具有雙列存儲的特點,即一次必須添加兩個元素,即一組鍵值對<Key,Value>,其中Key的值不可重複(當Key的值重複的時候,後面插入的對象會將之前插入的具有相同的Key值的對象覆蓋掉),Valu
前端面試題 - null是原始類型,但爲什麼typeof null的結果是object? 造成這個結果的原因是null的內存地址是以000開頭,而js會將000開頭的內存地址視爲object。 通過isNull()來判斷一個值是不是null
前言 作爲表格產品的典型應用場景之一,幾乎所有的行業都會存在類 Excel 報表開發這樣的應用場景,而在這些應用場景中,經常會遇見下面的這些痛點: 報表數據往往來自多個不同的數據源,需要報表系統能夠同時連接多個數據源,並融合不同的數據格式
轉載自劉茫茫看山 問題背景 某天我們的租戶反饋數據庫連接缺少必要的驅動,我們通過日誌查看確實是缺少部分數據庫的驅動,因爲DolphinScheduler默認只帶了Oracle和MySQL的驅動,並且需要將pom文件中的test模式去掉纔可以
一般我們在Linux下執行某些外部程序的時候可能會提示找不到共享庫的錯誤, 比如: tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open sha
安裝MYSQL時的一系列三大問題與三大解決方法 問題一: 問題二: 問題三: 問題一: 在安裝時候輸入 net start mysql 時候報錯爲: net不是內部或外部命令也不是可運行。 解決方法: 環境變量的問題