CSP 201604 3 路徑解析

2021-10-05 03:30:28 字數 1131 閱讀 7205

思路

相對路徑需要對路徑的末尾進行修改,所以宜使用棧。下面的**裡我使用了vector來充當棧,vector能夠更為方便地把內容從前往後列印出來。分割路徑成為乙個個目錄可以結合使用stringstream與getline。

目錄分為四種情況

(1)空,第乙個目錄為空的話表示這是絕對路徑,需要把棧清空;中間目錄為空,也就是多個//相連的情況,啥事不用做;

(2)…,表示需要從棧中彈出元素;

(3).啥事不用做;

(4)剩餘情況,推入棧中。

題目中所指出的兩個邊界情況「若這個路徑代表根目錄,則正規化操作的結果是 /。若路徑為空字串,則正規化操作的結果是當前目錄。」需要特殊考慮一下。

①預處理當前目錄

將當前目錄的路徑都儲存在乙個vector vec_cur中:將"/「替換為」 「,然後用字串流即可

②預處理給定目錄

1.將」//「全部刪除,將」/./「替換為」/"

2.若給定目錄為絕對路徑:類似於①中方法將路徑儲存至vector path中,其中遇到"…"時將vector的最後乙個元素刪除即可;

若給定目錄為相對路徑,令path = vec_cur,再將其當做絕對路徑處理。

#include

#include

#include

#include

using

namespace std;

int p;

string cur,input,tmp;

vector path;

vector vec_cur;

void

deal_cur()

void

deal_input()

else path.

push_back

(tmp);}

}void

print()

else cout<<

"/";

cout<<

"\n";}

intmain()

return0;

}

CSP 201604 3 路徑解析

試題編號 201604 3 試題名稱 路徑解析 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 在作業系統中,資料通常以檔案的形式儲存在檔案系統中。檔案系統一般採用層次化的組織形式,由目錄 或者資料夾 和檔案構成,形成一棵樹的形狀。檔案有內容,用於儲存資料。目錄是容器,可包含檔案...

CSP201604 3路徑解析

給出一系列檔案路徑,輸出正規化後的路徑。有分析可知,給出的路徑只有兩種形式,一是絕對路徑 以 開頭 二是相對路徑 以 開頭 對於相對路徑的處理,可以將它與當前目錄連在一起,變成絕對路徑後再正規化,根據分析得出將乙個路徑 絕對路徑 正規化要考慮到以下四點 路徑中是否出現 路徑中是否出現 路徑中是否出現...

CSP 201604 3路徑解析

問題描述 輸入格式 第一行包含乙個整數 p,表示需要進行正規化操作的路徑個數。第二行包含乙個字串,表示當前目錄。以下 p 行,每行包含乙個字串,表示需要進行正規化操作的路徑。輸出格式 共 p 行,每行乙個字串,表示經過正規化操作後的路徑,順序與輸入對應。樣例輸入 7 d2 d3 d2 d4 f1 d...