C++語言數(shù)據(jù)結(jié)構(gòu) 串的基本操作實(shí)例代碼
更新時(shí)間:2017年04月15日 16:07:14 投稿:lqh
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu) 串的基本操作實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
C語言數(shù)據(jù)結(jié)構(gòu) 串的基本操作實(shí)例代碼
輸出結(jié)果:

實(shí)現(xiàn)代碼:
#include<iostream>
using namespace std;
typedef int Status;
#define Max 20
#define OK 1
#define ERROR 0
#define OVERLOE -2
typedef struct//堆分配表示串
{
char *ch;
int length;
}HString;
//===================================================================
Status CreatHString(HString &H)//構(gòu)造字符串
{
H.length = 0;
H.ch = (char *)malloc(Max*sizeof(char));
for (int i = 0; i < Max; i++)
{
H.ch[i]=getchar();
H.length++;
if (getchar() == '\n')
break;
}
return OK;
}//CreatHString
//===================================================================
Status PrintHString(HString H)//輸出所輸入的字符串
{
if (H.length == 0)
{
cout << "空串!" << endl;
return ERROR;
}
else
for (int i = 0; i < H.length; i++)
cout << H.ch[i] << " ";
cout << endl;
return OK;
}//PrintHString
//===================================================================
Status HStringLength(HString H)//求字符串的長(zhǎng)度
{
cout << "您輸入的字符串長(zhǎng)度為:" << endl;
cout << H.length << endl;
return OK;
}//HStringLength
//===================================================================
Status HStringCompare(HString H, HString T)//求兩個(gè)字符串長(zhǎng)度差(絕對(duì)值)
{
cout << "兩個(gè)字符串的長(zhǎng)度差為:" << endl;
int L;
L = H.length - T.length;
if (L<0)
cout << -L << endl;
if (L>=0)
cout << L << endl;
return OK;
}//HStringCompare
//===================================================================
Status ConcatHString(HString &S, HString H, HString T)//鏈接H和T
{
if (!(S.ch = (char *)malloc((H.length + T.length)*sizeof(char))))
exit(OVERLOE);
for (int i = 0; i < H.length; i++)
S.ch[i] = H.ch[i];
S.length = H.length + T.length;
for (int j = H.length; j < S.length; j++)
S.ch[j] = T.ch[j-H.length];
return OK;
}//ConcatHString
//===================================================================
Status SubHString(HString &Sub, HString S, int pos,int len)
{//用Sub返回串S的第pos個(gè)字符起長(zhǎng)度為len的子串
if (pos<1 || pos>S.length)
{
cout << "輸入的位置有誤!" << endl;
return ERROR;
}
if (len<0 || len>S.length - pos + 1)
{
cout << "輸入的長(zhǎng)度有誤!" << endl;
return ERROR;
}
if (!len)
{
Sub.ch == NULL;
Sub.length = 0;
}
else
{
Sub.ch = (char *)malloc(len*sizeof(char));
for (int i = 0; i < len ; i++)
Sub.ch[i] = S.ch[pos + i - 1];
Sub.length = len;
}
return OK;
}//SubHString
//===================================================================
Status ClearHString(HString &H)//將H清為空串
{
if (H.ch)
{
free(H.ch);
H.ch = NULL;
}
H.length = 0;
return OK;
}//ClearHString
//===================================================================
void main()
{
HString S,H,T;
cout << "請(qǐng)輸入一個(gè)字符串(按回車鍵結(jié)束):" << endl;
CreatHString(H);
cout << "現(xiàn)在串中的字符為:" << endl;
PrintHString(H);
HStringLength(H);
cout << "請(qǐng)?jiān)佥斎胍粋€(gè)字符串(按回車鍵結(jié)束):" << endl;
CreatHString(T);
HStringCompare(H, T);
ConcatHString(S, H, T);
cout << "現(xiàn)在串中的字符為:" << endl;
PrintHString(S);
HString Sub;
int pos, len;
cout << "請(qǐng)輸入截取位置pos及長(zhǎng)度len:" << endl;
cin >> pos >> len;
SubHString(Sub, S, pos, len);
cout << "截取的子串為:" << endl;
PrintHString(Sub);
ClearHString(S);
cout << "檢驗(yàn)S清空后是否為空:" << endl;
PrintHString(S);
}//main
您可能感興趣的文章:
- C語言數(shù)據(jù)結(jié)構(gòu)之模式匹配字符串定位問題
- C語言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)字符串分割的實(shí)例
- C語言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)串(堆分配存儲(chǔ)表示法)實(shí)例詳解
- C數(shù)據(jù)結(jié)構(gòu)中串簡(jiǎn)單實(shí)例
- C語言數(shù)據(jù)結(jié)構(gòu)中串的模式匹配
- JavaScript數(shù)據(jù)結(jié)構(gòu)中串的表示與應(yīng)用實(shí)例
- 數(shù)據(jù)結(jié)構(gòu)基本概念和術(shù)語之位字節(jié)、字、位串、元素等
- C語言數(shù)據(jù)結(jié)構(gòu)之動(dòng)態(tài)分配實(shí)現(xiàn)串
相關(guān)文章
C語言使用openSSL庫(kù)AES模塊實(shí)現(xiàn)加密功能詳解
這篇文章主要介紹了C語言使用openSSL庫(kù)AES模塊實(shí)現(xiàn)加密功能,詳細(xì)分析了C語言加密的相關(guān)概念、原理及AES模塊加密具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-05-05
C++從匯編的視角審視對(duì)象的創(chuàng)建問題
這篇文章主要介紹了C++從匯編的視角看對(duì)象的創(chuàng)建,從匯編的視角來看,調(diào)用構(gòu)造器和調(diào)用 “返回對(duì)象” 的函數(shù)是一樣的,從匯編的角度來看,對(duì)象就是一堆數(shù)據(jù)的排列,比如說最普通的對(duì)象就是數(shù)據(jù)成員按照聲明順序直接排列,需要的朋友可以參考下2022-01-01
C++?計(jì)算時(shí)間差的五種方法小結(jié)
本文主要介紹了C++?計(jì)算時(shí)間差的五種方法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
C語言實(shí)現(xiàn)可增容動(dòng)態(tài)通訊錄詳細(xì)過程
這篇文章主要為大家介紹了C語言實(shí)現(xiàn)簡(jiǎn)易通訊錄的完整流程,此通訊錄還可以增容,并且每個(gè)環(huán)節(jié)都有完整代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-05-05

