单词排序,c++编写,希望大牛帮忙!谢谢!

描述输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字母顺序输出这些单词(即按照字符串中字母的ASCII码排序,区分大小写,当首字母相同时,比较第2个字母,依次... 描述
输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字母顺序输出这些单词(即按照字符串中字母的ASCII码排序,区分大小写,当首字母相同时,比较第2个字母,依次类推),要求重复的单词只输出一次。

关于输入
一行单词序列,最少1个单词,最多100个单词,每个单词长度不超过50,单词之间用至少1个空格间隔。

关于输出
按字母顺序输出这些单词,重复的单词只输出一次。

例子输入
She wants to go to Peking University to study Chinese

例子输出
Chinese
Peking
She
University
go
study
to
wants
展开
 我来答
匿名_热心网友
2012-01-02 · TA获得超过719个赞
知道大有可为答主
回答量:3827
采纳率:0%
帮助的人:8411万
展开全部
#include <iostream>
using namespace std;
//二杈树的二杈线索存储表示
typedef char ElemType;
typedef enum PointerTag {Link, Thread}; //Link:指针,Thread:线索
typedef struct BiThrNode{
ElemType data;
struct BiThrNode *lchild, *rchild;//左,右孩子指针
PointerTag LTag, RTag; //左,右标志
} *BiThrTree;
void InOrderTraverse_Thr(BiThrTree T);//中序遍历线索二杈树的非递归算法, T 指向头结点
void InThreading(BiThrTree & p, BiThrTree & pre); //中序线索化
BiThrTree InOrderThreading(BiThrTree T);//中序遍历二杈树,并将其中序线索化
void CreateBTree(BiThrTree & bt);//生成一棵二杈排序树(输入单个字符,以#结束)
BiThrTree NewBTree(ElemType x);//构造一个数据域为x的新结点
void Insert(BiThrTree & b, BiThrTree s);//在二杈排序树中插入新结点s
void InOrderPrint_1(BiThrTree p); //中序遍历输出结点(递归)
int main()
{
sunnyfulin
2011-12-22 · TA获得超过465个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:190万
展开全部
#include <iostream>
#include <string>
#include <algorithm>
#define maxsize 20
using namespace std;

int main()
{
string str[maxsize]={}; //假设最多读入maxsize 个单词,可以任意更改(下面的数字都要改)
char temp = NULL;
int i=0;
do{ //用do…while循环读入单词,并保存到字符串数组中
cin>>str[i];
i++;
}while ((temp=cin.get()) != '\n'); //回车结束读入

sort(str,str+maxsize); //用C++内置函数排序,默认为升序

for(int j=0;j<maxsize-1; j++) //输出之。
{
if(!str[j+1].empty()&& str[j] != str[j+1]) //字符串不空,并且不和下一个字符串重复
cout<<str[j+1]<<endl; //则输出之
}
}

//不能连续读入空格,程序的缺陷,你改下吧……我还没有想到该怎么办…………

参考资料: http://hi.baidu.com/posinfo/blog/item/4d1a6e35a49b7ebed0a2d3e0.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a9aac05dc
2011-12-21 · TA获得超过139个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:134万
展开全部
写好了
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

void show(string str)
{
cout<<str<<endl;
}

int main(void)
{
size_t index = 0,end,t_index = 0;
vector<string> container;
vector<string>::iterator pos;
string str("She wants to go to Peking University to study Chinese"),token;
while((index = str.find_first_of(' ',t_index)) != -1)
{
if(t_index == 0)
container.push_back(str.substr(0,index));
while(str[index] == ' ')
index++;
t_index = index;
end = str.find_first_of(' ',index);
token = str.substr(index,end - index);
container.push_back(token);
}
sort(container.begin(),container.end());
pos = unique(container.begin(),container.end());
container.erase(pos);
for_each(container.begin(),container.end(),show);
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Michelle
2020-12-24
知道答主
回答量:11
采纳率:0%
帮助的人:5193
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式