日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数据结构基础】-串-顺序结构的基本操作实现

發(fā)布時間:2024/7/19 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据结构基础】-串-顺序结构的基本操作实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019.10.12

數(shù)據(jù)結(jié)構(gòu)中串的基本操作實現(xiàn),包括串的定義,串的初始化,賦值,獲取串的長度,串的比較,連接串,求子串,清空串。
語言:c語言
運行環(huán)境:dev

#include <stdio.h> #include<malloc.h> #include<stdlib.h> #include<string.h>#define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0typedef int Status;//數(shù)據(jù)結(jié)構(gòu)-串 typedef struct {//指向串的首地址char *ch;//串的長度int length; } SString;//串的初始化,分配空間 Status SStringInit(SString *str) {str->length =0;str->ch=NULL;return OK; }//將ch的值復制到str中 Status SStringAssign( SString & str ,char * ch) {int len = 0;char * c = ch;//求串長,計算需要給str分配多大空間,len=ch的長度+1while (*c) {++len;++c;}str.ch = (char *)malloc(sizeof(char)*(len + 1));if(str.ch ==NULL)//空間分配失敗return 0;else {c = ch;for(int i = 0; i <= len ; ++i,++c)str.ch[i] = *c;str.length = len;return 1;} }//獲取串的長度 Status GetSStringLength(SString str) {return str.length; }//串比較, Status StrCompare(SString str1,SString str2) {for(int i = 0; i <str1.length && i < str2.length; ++i)if(str1.ch[i] != str2.ch[i])return str1.ch[i] - str2.ch[i];return str1.length - str2.length; }//連接str1,str2,并且將其儲存到str中 Status Concat(SString str1, SString str2, SString &str) {//先給str分配空間,大小為str1+str2str.ch=(char *)malloc(sizeof(char)*(str1.length+str2.length+1));if(str.ch==NULL) {printf("分配空間失敗!");return ERROR;}//定義i,j,一個輔助str1的轉(zhuǎn)移,另一個輔助str2的轉(zhuǎn)移,最后將str.length=i+j, 并且str.ch[i+j]='\0';int i=0,j=0;while(i<str1.length) {str.ch[i]=str1.ch[i];i++;}while(j<str1.length) {str.ch[i+j]=str2.ch[j];j++;}str.ch[i+j]='\0';str.length = str1.length+str2.length;return OK; }//求子串:從主串str里的第pos位置后開始,依次把len個元素作為子串substr Status GetSubString(SString str,int pos, int len, SString &substr) {//判斷該位置是否合理if(pos<0||pos>str.length) {printf("輸入的起始位置不合法!");return ERROR;}//如果substr.ch之前已經(jīng)分配過空間了,便將其釋放,使指針指向null,重新分配空間if(substr.ch) {free(substr.ch);substr.ch=NULL;}//為str分配空間,空間大小為lensubstr.ch=(char *)malloc(sizeof(char)*(len+1));//int i=pos,j=0;while(i<pos+len) {substr.ch[j]=str.ch[i];i++;j++;}substr.ch[j]='\0';substr.length=len;return OK; }//清空串 Status ClearString(SString &str) {if(str.ch) {free(str.ch);str.ch=NULL;}str.length=0;return OK; }int main() {SString str1,str2,str;SStringInit(&str1);printf("str1初始化:%s %d\n",str1.ch,str1.length);SStringInit(&str2);printf("str2初始化:%s %d\n",str2.ch,str2.length);SStringAssign(str1,"hello world");printf("填充內(nèi)容:%s 長度:%d\n",str1.ch,str1.length);SStringAssign(str2,"hello world1");printf("填充內(nèi)容:%s 長度:%d\n",str2.ch,str2.length);printf("str1的長度為:%d\n",GetSStringLength(str1));printf("兩個串是否相等?:%d (0代表相等,其余值代表不相等)\n",StrCompare(str1,str2));Concat(str1,str2,str);printf("str1與str2連接后:%s\n",str.ch);GetSubString(str1,0,5,str);printf("str1從0到5的內(nèi)容:%s\n",str.ch);ClearString(str);printf("清除串str:%s %d\n",str.ch,str.length);return 0; }

總結(jié)

以上是生活随笔為你收集整理的【数据结构基础】-串-顺序结构的基本操作实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。