数据结构作业栈与队列(STL实现)处理字符串之从中部摇摆输出
2009-10-05 12:12
204 查看
表被题目吓到,所谓从中部摇摆输出即是将一个字串若长度为奇数,则首先输出中间的字母,然后输出中间前边一个字母,然后输出中间后边一个字母,然后输出中间前边的前边的字母,然后输出中间后边的后边的字母……直到输出完毕;偶数的话直接从中部开始重复上述过程,只不过少了一个输出中间字母的步骤。很像左摇一下,右摇一下,故而得名。
for example:abcde 应该输出:cbdae abcd 应该输出:bcad
这个要求可能有更简便的实现方法,但既然是数据结构作业,就用数据结构来做啦。放码子:
本题充分利用栈和队列的特点,码子中用了双端对列,安全可以用普通队列代替~
for example:abcde 应该输出:cbdae abcd 应该输出:bcad
这个要求可能有更简便的实现方法,但既然是数据结构作业,就用数据结构来做啦。放码子:
#pragma warning(disable:4786)//屏蔽字符名超长警告 #include"stdafx.h"//VS下用到的预编译头文件 #include<iostream>//输出顺序是从中间开始,前一个后一个循环顺次输出 #include<deque> #include<cstdio> #include<stack> #include<cstring> using namespace std; char ss[1<<20]; int main() { unsigned int i; char tmp; string s; deque<char>de;//接收后半部分字串 stack<char>st;//接收前半部分字串 scanf("%s",ss);//要保证长度为奇数 s=ss; for(i=0;i<s.length()/2;i++) st.push(s[i]); if(s.length()&1) { for(i=s.length()/2+1;i<s.length();i++) de.push_back(s[i]); printf("%c",s[s.length()/2]); } else { for(i=s.length()/2;i<s.length();i++) de.push_back(s[i]); } while(!st.empty() && !de.empty()) { tmp=st.top(); printf("%c",tmp); st.pop(); tmp=de.front(); printf("%c",tmp); de.pop_front(); } printf("/n");; return false; }
本题充分利用栈和队列的特点,码子中用了双端对列,安全可以用普通队列代替~
相关文章推荐
- 批处理按要求将字符串分段输出的实现代码
- 优先队列 STL 实现
- java实现数据结构练习题--仅使用处理单个数字的I/O例程,编写一个过程以输出任意实数(可以是负的)
- C++标准库__std::deque(双端队列),std::queue(队列),std::stack(栈)__由stl的定义我们就可以看出 queue和stack都是基于deque实现的和常用接口
- 在Javascript中对String的一些方法扩展,实现常用的字符串处理。
- 批处理将字符串输出到Windows剪贴板
- java中实现与.net的format格式化字符串输出
- 1006.换个格式输出整数(字符串处理)
- C字符串处理函数的实现(Linux)
- 字符串处理函数的自定义函数实现
- 字符串处理 读入及输出
- jedis实现redis的消息队列、发布对象消息、字节数组与字符串相互转换
- 将整数字符串转换成整数输出(JAVA实现,不能用自带函数)
- C语言中字符串处理函数实现(部分)
- Android中 实现队列方式处理优先级信息
- Leetcode 13 Roman to Integer 字符串处理+STL
- PHP中利用redis实现消息队列处理高并发请求
- C++ 常用的字符串处理函数实现
- Java实现字符串大小写的转换并倒序输出
- 用一个函数实现将一行字符串中最短的单词输出。此行字符串从主函数传递给该函数。假设字符串中包含的单词以空格作为分隔符号,例如”Asia Games 2010 is held in GuangZhou.”,其中最短的单词是”is”和”in”。