您的位置:首页 > 编程语言 > C语言/C++

C++经典面试题(十)

2015-06-27 16:10 513 查看
最近看一些面试题,觉得如果自己被问到了,并不能很利落的回答出来。

一是从来没有这个意识,二是没有认真的梳理下。

下面对这些题做出分析,哈!个人能力有限,其中难免有疏漏,欢迎大家补充咯!

91.输入一个字符串,将其逆序后输出 。

【参考答案】



还有第二种



92.编写一个算法frequency,统计在一个输入字符串中各个不同字符出现的频度。用适当的测试数据来验证这个算法。

void frequency( String& s, char& A[ ], int& C[ ], int &k )
{
int i, j, len = s.length( );
if ( !len )
{
cout << "The string is empty. " << endl;
k = 0;
return;
}
else
{
A[0] = s[0];
C[0] = 1;
k = 1;  	/*语句s[i]是串的重载操作*/
for ( i = 1; i < len; i++ )
C[i] = 0;  			/*初始化*/
for ( i = 1; i < len; i++ )
{
/*检测串中所有字符*/
j = 0;
while ( j < k && A[j] != s[i] )
j++; /*检查s[i]是否已在A[ ]中*/
if ( j == k )
{
A[k] = s[i];  /*s[i]从未检测过*/
C[k]++;
k++
}
else
C[j]++;			/*s[i]已经检测过*/
}
}
}


93.假设以数组Q[m]存放循环队列中的元素, 同时以rear和length分别指示环形队列中的队尾位置和队列中所含元素的个数。试给出该循环队列的队空条件和队满条件, 并写出相应的插入(enqueue)和删除(dlqueue)元素的操作。

【参考答案】循环队列类定义

#include <assert.h>
template <class Type> class Queue {	//循环队列的类定义
public:
Queue ( int=10 );
~Queue ( ) { delete [ ] elements; }
void EnQueue ( Type & item );
Type DeQueue ( );
Type GetFront ( );
void MakeEmpty ( ) { length = 0; }		//置空队列
int IsEmpty ( ) const { return length == 0; }	//判队列空否
int IsFull ( ) const { return length == maxSize; }	//判队列满否
private:
int rear, length;				//队尾指针和队列长度
Type *elements;				//存放队列元素的数组
int maxSize;				//队列最大可容纳元素个数
};


template <class Type>
Queue<Type>:: Queue ( int sz ) : rear (maxSize-1), length (0), maxSize (sz)
{//建立一个最大具有maxSize个元素的空队列。
elements = new Type[maxSize];		//创建队列空间
assert ( elements != 0 );		//断言: 动态存储分配成功与否
}
template<class Type>
void Queue<Type> :: EnQueue ( Type &item )
{
assert ( ! IsFull ( ) );			//判队列是否不满,满则出错处理
length++;				//长度加1
rear = ( rear +1) % maxSize;		//队尾位置进1
elements[rear] = item;			//进队列
}
template<class Type>
Type Queue<Type> :: DeQueue ( )
{
assert ( ! IsEmpty ( ) ); 			//判断队列是否不空,空则出错处理
length--;				//队列长度减1
return elements[(rear-length+maxSize) % maxSize];	//返回原队头元素值
}
template<class Type>
Type Queue<Type> :: GetFront ( )
{
assert ( ! IsEmpty ( ) );
return elements[(rear-length+1+maxSize) % maxSize];	//返回队头元素值
}


未完。。。待续(*^_v_^*)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c c++ 面试题