⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 string.cpp

📁 这是c++版本的数据结构
💻 CPP
字号:
//String.cpp  
#include "String.h"
/*
*前置条件:串不存在
*输    入:无
*功    能:构建一个串
*输    出:无
*后置条件:构建一个串
*/
template <class T> 
String<T>:: String( )
{
	data[0]="0";
	length=0;
}
/*
*前置条件:串不存在
*输    入:串信息的数组形式a[],串长度n
*功    能:将数组a[]中元素建为长度为n的串
*输    出:无
*后置条件:构建一个串
*/
template <class T> 
String<T>:: String(T a[], int n)
{
  if (n>MaxSize) throw "参数非法";
  for (int i=0; i<n; i++)  
    data[i+1]=a[i];
  data[0]=n;
  length=n;
}
/*
*前置条件:无
*输    入:无
*功    能:无
*输    出:无
*后置条件:无
*/
template <class T> 
String<T>:: ~String( )
{
}
/*
*前置条件:顺序表存在
*输    入:无
*功    能:输出顺序表长度
*输    出:顺序表长度
*后置条件:顺序表不变
*/
template <class T>
int String<T>::Length()
{
	 return length;
}
/*
*前置条件:串存在
*输    入:串x,位置i
*功    能:将串x插入到串S 的第i个位置上
*输    出:无
*后置条件:串x不变
*/
template <class T> 
void String<T>::StrInsert(int i, String x)
{ 
	int j;
  if (length>=MaxSize) throw "上溢";
    if (i<1 || i>length+1) throw "位置";
  for (int k=x.length;k>0;k--)
  {
    for (j=length; j>=i; j--)
    data[j+1]=data[j];   
    data[i]=x.data[k];
    length++;
	data[0]=data[0]+1;
  }
}
/*
*前置条件:串存在
*输    入:位置i,长度len
*功    能:删除串S中从第i个字符开始连续len个字符
*输    出:无
*后置条件:串删除元素
*/
template <class T>
void String<T>::StrDelete(int i,int len)
{ 
  int j,k;
  if (len==0) throw "下溢";
  if (i<1 || i>length) throw "位置";
  for (k=len; k>0; k--)
  {
   for (j=i; j<length; j++)
     data[j]=data[j+1];   
   length--;
   data[0]=data[0]-1;
  }
}
/*
*前置条件:无
*输    入: 串T
*功    能:串连接,将串T放在串S的后面连接成一个新串S
*输    出:无
*后置条件:串T不变
*/
template <class T>
void String<T>::StrConcat(String T)
{ 
  int k,j;
  for (k=1; k<=T.length; k++)
  {
    data[length+k]=T.data[k];   
    length++;
    data[0]=data[0]-1;
  } 
}
/*
*前置条件:无
*输    入: 串T
*功    能:将T的串值赋值给串S
*输    出:无
*后置条件:串T不变
*/
template <class T>
void String<T>::StrAssign(String T)
{ 
  int k,j;
  for (k=1; k<T.length; k++)
    data[k]=T.data[k];   
  length=T.length;
  data[0]=T.data[0];
}
/*
*前置条件:串存在
*输    入:无
*功    能:串遍历输出
*输    出:输出所有元素
*后置条件:串不变
*/
template <class T>
void String<T>::PrintList()
{
	for(int i=1;i<=length;i++)
	cout<<data[i];
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -