CCF 201604 3 路徑解析

2021-10-06 21:02:08 字數 3011 閱讀 6238

70分:沒有注意到輸入空字串;

80分:相對路徑和絕對路徑的區別不是第乙個字元是否為』.』,而是是否為』/』

這裡**有點冗長,需要精簡一下。

還可以使用stringstream來解題,非常方便。**如下:

//使用sstream

#include

#include

#include

using

namespace std;

stack sta,stmp;

intmain()

for(

int i=

0;isize()

;i++)if

(s[i]

=='/'

)s[i]

=' '

;//stringstream開始了

stringstream sstream

(s);

//將s放進string流中

string tmp;

while

(sstream>>tmp)

//將字串讀入到tmp中

sta.

push

(tmp);}

//輸出,用vector更好一點

if(sta.

empty()

)while

(!sta.

empty()

)while

(!stmp.

empty()

) cout<

}return0;

}

//麻煩一點的

#include

#include

#include

#include

#include

using

namespace std;

stack st;

stack stt;

void

cpyst()

while

(!tmp.

empty()

)}void

outp

(stack s1)

while

(!sta.

empty()

)} cout<

}int

main()

if(now[i]

=='.'

&&now[i+1]

=='.'

&&i+

1==sze-

1||i+

3<=sze&&now[i]

=='.'

&&now[i+1]

=='.'

&&now[i+2]

=='/')if

(now[i]

=='.'

&&i==sze-

1||i+

2<=sze&&now[i]

=='.'

&&now[i+1]

=='/'

) string str;

int j;

//是檔案名字,因為檔名中可能含有'.',所以這個if不能和上面的if調換位置

for(j=i;j

!='/'

;j++

) st.

push

(str)

; i=j;

}getchar()

;//正規化

string p;

while

(n--

) sze=p.

size()

;if(p[0]!=

'/')

//需要用到當前目錄

if(p[i]

=='.'

&&p[i+1]

=='.'

&&i==sze-

2||i+

3<=sze&&p[i]

=='.'

&&p[i+1]

=='.'

&&p[i+2]

=='/')if

(p[i]

=='.'

&&i==sze-

1||i+

2<=sze&&p[i]

=='.'

&&p[i+1]

=='/'

) string str;

int j;

//是檔案名字,因為檔名中可能含有'.',所以這個if不能和上面的if調換位置

for(j=i;j

!='/'

;j++

) stt.

push

(str)

; i=j;

}outp

(stt);}

else

//不需要用到本機目錄

if(p[i]

=='.'

&&p[i+1]

=='.'

&&i+

1==sze-

1||i+

3<=sze&&p[i]

=='.'

&&p[i+1]

=='.'

&&p[i+2]

=='/')if

(p[i]

=='.'

&&i==sze-

1||i+

2<=sze&&p[i]

=='.'

&&p[i+1]

=='/'

) string str;

int j;

//是檔案名字,因為檔名中可能含有'.',所以這個if不能和上面的if調換位置

for(j=i;j

!='/'

;j++

) t.

push

(str)

; i=j;

}//輸出

outp

(t);}}

return0;

}

CCF201604 3路徑解析

本題會給出一些路徑,要求對於每個路徑,給出正規化以後的形式。乙個路徑經過正規化操作後,其指定的檔案不變,但是會變成乙個不包含 和 的絕對路徑,且不包含連續多個 符號。如果乙個路徑以 結尾,那麼它代表的一定是乙個目錄,正規化操作要去掉結尾的 若這個路徑代表根目錄,則正規化操作的結果是 若路徑為空字串,...

CCF201604 3路徑解析

問題描述 在作業系統中,資料通常以檔案的形式儲存在檔案系統中。檔案系統一般採用層次化的組織形式,由目錄 或者資料夾 和檔案構成,形成一棵樹的形狀。檔案有內容,用於儲存資料。目錄是容器,可包含檔案或其他目錄。同乙個目錄下的所有檔案和目錄的名字各不相同,不同目錄下可以有名字相同的檔案或目錄。為了指定檔案...

CCF 201604 3 路徑解析

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