kenwell
自己学习所用
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
统计
随笔 - 25
文章 - 4
评论 - 21
引用 - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔分类
c++学习中的问题(10)
(rss)
shell(7)
(rss)
stl学习
(rss)
vim(1)
(rss)
算法(4)
(rss)
随笔档案
2010年8月 (5)
2010年6月 (6)
2008年10月 (3)
2008年7月 (2)
2008年6月 (2)
2008年5月 (2)
2007年10月 (1)
2006年11月 (1)
2006年3月 (3)
文章分类
c++学习心得(2)
(rss)
stl学习(1)
(rss)
文章档案
2008年7月 (2)
2006年3月 (2)
c++的好站点
stl中文站
能下吧
电脑书籍下载
最优秀的STL使用学习网站
搜索
最新评论
1. re: Linux Shell Bash 正则表达式介绍[未登录]
评论内容较长,点击标题查看
--Steven
2. re: c++经典书籍推荐和下载
不错 我才 来看不知道晚不晚了
--次奥校
3. essays
In all seriousness, this is quite hilarious and, unfortunately, probably true.
--termpapers99@gmail.com
4. re: 一个n!的数后面有多少个0
评论内容较长,点击标题查看
--thesis service
5. re: 一个n!的数后面有多少个0
评论内容较长,点击标题查看
--buy cheap research paper
阅读排行榜
1. c++ string 和wstring 之间的互相转换函数(29358)
2. c++经典书籍推荐和下载(11440)
3. Linux Shell Bash 正则表达式介绍(7750)
4. c++ 中用IXMLHTTPRequest向服务器post Xml数据(4349)
5. 一个n!的数后面有多少个0(2945)
评论排行榜
1. 一个n!的数后面有多少个0(13)
2. c++经典书籍推荐和下载(8)
3. c++ string 和wstring 之间的互相转换函数(2)
4. Linux Shell Bash 正则表达式介绍(1)
5. shell 变量间接引用(0)
上海交通大学cs的一道复试题
原题目如下:
给你一串路径,譬如
a\b\c
a\d\e
b\cst
d
你把这些路径中蕴涵的目录结构给画出来,子目录直接列在父目录下面,并比父目录向右
缩一格,就象这样
a
b
c
d
e
b
cst
d
同一级的需要按字母顺序排列,不能乱。
下面是我的代码:欢迎讨论(ps:附件中是代码文件)
#include
<
iostream
>
#include
<
vector
>
#include
<
string
>
#include
<
algorithm
>
using
namespace
std;
typedef vector
<
string
>
strVec;
//
比较函数
bool
lessCmp(
const
strVec vec1,
const
strVec vec2)
{
for
(
int
i
=
0
; i
<
vec1.size()
&&
i
<
vec2.size(); i
++
)
{
if
(vec1[i]
<
vec2[i])
return
true
;
else
if
(vec1[i]
>
vec2[i])
return
false
;
}
return
true
;
}
int
main()
{
int
num
=
0
;
cout
<<
"
输入你所要输入的文件路径数目:
"
;
cin
>>
num;
vector
<
strVec
>
inputVec;
//
strVec pathtemp;
cout
<<
"
输入文件路径:\n
"
;
for
(
int
i
=
0
; i
<
num; i
++
)
{
string
s;
cin
>>
s;
pathtemp.push_back(s);
}
for
(i
=
0
; i
<
pathtemp.size(); i
++
)
{
string
text
=
pathtemp[i];
string
::size_type pos
=
0
, pre_pos
=
0
;
strVec nametemp;
while
((pos
=
text.find_first_of(
'
\\
'
, pos))
!=
string
::npos)
{
nametemp.push_back(text.substr(pre_pos, pos
-
pre_pos));
pre_pos
=
++
pos;
}
nametemp.push_back(text.substr(pre_pos, pos
-
pre_pos));
inputVec.push_back(nametemp);
}
//
按顺序进行排序
sort(inputVec.begin(), inputVec.end(), lessCmp);
cout
<<
"
按要求输入的文件目录树如下:\n
"
;
if
(
!
inputVec.empty())
{
strVec nametemp
=
inputVec[
0
];
for
(
int
num
=
0
; num
<
nametemp.size(); num
++
)
{
for
(
int
j
=
0
; j
<
num; j
++
)
cout
<<
"
"
;
cout
<<
nametemp[num]
<<
"
\n
"
;
}
}
strVec pre
=
inputVec[
0
];
for
(i
=
1
; i
<
inputVec.size(); i
++
)
{
strVec nametemp
=
inputVec[i];
int
cnt
=
0
;
while
(cnt
<
pre.size()
&&
cnt
<
nametemp.size())
{
if
(pre[cnt]
!=
nametemp[cnt])
break
;
cnt
++
;
}
for
(
int
num
=
cnt; num
<
nametemp.size(); num
++
)
{
for
(
int
j
=
0
; j
<
num; j
++
)
cout
<<
"
"
;
cout
<<
nametemp[num]
<<
"
\n
"
;
}
pre
=
nametemp;
}
}
posted on 2006-03-12 12:21
c++ 学习
阅读(362)
评论(0)
编辑
收藏
引用
所属分类:
stl学习
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理