亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

數據結構串的操作實例詳解

2020-01-26 14:01:48
字體:
來源:轉載
供稿:網友

數據結構串的操作實例詳解

串是一種特殊的線性表,它的每個結點是一個字符,所以串也稱作字符串。

    關于串的操作主要有求串長,串復制,串連接,求子串,串插入,串刪除,子串定位等。串的操作也是C語言筆試中??嫉囊徊糠帧?br />

    下面的代碼實現了串的主要操作。

#include <stdio.h> #include <stdlib.h>  #define MAXSIZE 20 char *String_Create();         //創建串 int String_Length(char *s);       //求串長 void String_Show(char *s);       //輸出串 char *String_Copy(char *d, char *s);  //串復制 char *String_Connect(char *d, char *s); //串連接 char *String_SubStr(char *d, char *s, int pos, int len);  //求子串 int String_Compare(char *d, char *s);  //串比較 char *String_Insert(char *d, char *s, int pos);   //串插入 char *String_Delete(char *d, int pos, int len);   //串刪除 int String_Index(char *d, char *s, int pos);    //串匹配  int main(void) {   int choice;   char *str, *c;   int ans, pos, len;    c = (char*)malloc(sizeof(MAXSIZE));   printf("請輸入一串字符串(小于10個字符):/n");   str = String_Create();      while(1)   {     printf("***************************/n");     printf("字符串操作練習:/n");     printf("1.求串長/n");     printf("2.串復制/n");     printf("3.串連接/n");     printf("4.求子串/n");     printf("5.比較串/n");     printf("6.串插入/n");     printf("7.串刪除/n");     printf("8.串定位/n");     printf("9.串輸出/n");     printf("10.退出程序/n");          printf("輸入選擇:/n");     scanf("%d", &choice);     getchar();      switch(choice)     {     case 1:       ans = String_Length(str);       printf("串的長度為%d/n", ans);       break;     case 2:       c = String_Copy(c, str);       printf("目標字符串為:/n");       String_Show(c);       break;     case 3:       printf("輸入字串(小于10個字符)/n");       gets(c);       c = String_Connect(c, str);       printf("新的字符串為/n");       String_Show(c);       break;     case 4:       printf("輸入你想求子串所在位置及長度/n");       scanf("%d %d", &pos, &len);       c = String_SubStr(c, str, pos, len);       if(c == NULL)         printf("求子串失?。?n");       else       {         printf("所求子串為:/n");         String_Show(c);       }       break;     case 5:       printf("輸入字串:/n");       gets(c);       ans = String_Compare(c, str);       if(ans>0)         printf("首字符串大/n");       else if(ans<0)         printf("第二個字符串大/n");       else         printf("兩字符串相等/n");       break;     case 6:       printf("輸入需在主串中插入的字串/n");       gets(c);       printf("輸入插入的位置:/n");       scanf("%d", &pos);       str = String_Insert(str, c, pos);       printf("新的字符串為:/n");       String_Show(str);       break;     case 7:       printf("輸入刪除子串的起始位置及長度/n");       scanf("%d %d", &pos, &len);       str = String_Delete(str, pos, len);       break;     case 8:       printf("輸入要定位的子串:/n");       gets(c);       ans = String_Index(str, c, 1);       printf("定位的結果為%d/n", ans);       break;     case 9:       String_Show(str);       break;     case 10:       return 0;       break;     default:       printf("選擇無效!/n");       break;     }   }   return 1; }  //創建串 char *String_Create() {   char *s, ch;   int i = 0;    s = (char*)malloc(MAXSIZE);   ch = getchar();   while(ch != '#')   {     *(s+i) = ch;     i++;     ch = getchar();   }   if(i > MAXSIZE/2)     printf("輸入長度大于10!/n");   else     *(s+i) = '/0';   return s; }  //求串長 int String_Length(char *s) {   int l=0;    while(*s != '/0')   {     l++;     s++;   }    return l; }  //串的復制 char *String_Copy(char *d, char *s) {   char *c;    c = d;   while((*d++=*s++)!='/0');    return c; }  //串連接 char *String_Connect(char *d, char *s) {   char *c;   int l, i=0;;    c = d;   l = String_Length(d);   d = d + l;   while((*d++ = *s++) != '/0');    //串連接    return c; }  //求子串 char *String_SubStr(char *d, char *s, int pos, int len) {   char *c1, *c2=NULL;   int l, i;      c2 = (char*)malloc(MAXSIZE/2);    c1 = s;   d = c2;   l = String_Length(s);    if(pos>l || pos<1)      //輸入位置非法     return NULL;   if(len<0)          //輸入長度非法     return NULL;   c1 = c1 + pos - 1;      for(i=1; i<=len && *c1 != '/0'; i++) //求字串   {     *c2++ = *c1++;   }   *c2 = '/0';         //不要忘記結尾符號      return d; }  //串比較 int String_Compare(char *d, char *s) {   char *c1, *c2;    c1 = d;   c2 = s;    while(*c1 != '/0' || *c2 != '/0')   {     if(*c1 > *c2)       return 1;     else if(*c1 < *c2)       return -1;     c1++;     c2++;   }   if(*c1 == '/0' && *c2 == '/0')   //兩個字符處都結束時,則兩字符串相等     return 0;   else if(*c2 == '/0')        //第二個字符串先結束,則第一個字符串大     return 1;   else     return -1; }  //插入串 char *String_Insert(char *d, char *s, int pos) {   int i, ld,ls;   char *c1, *c2;    c1 = d;   c2 = s;    ld = String_Length(d);   ls = String_Length(s);    for(i=ld; i>=pos-1; i--)   //字符串后移,留出待插字符串位置     *(c1 + ls + i) = *(c1 + i);    for(i=pos; i<=pos+ls-1; i++) //插入子字符串     *(c1 + i - 1) = *c2++;   *(c1 + ld + ls) = '/0';     //最后的結尾符號不能忘掉    return d; }  //串刪除 char *String_Delete(char *d, int pos, int len) {   int i, l;    l = String_Length(d);   if(pos + len > l)        //如果刪除長度大于字串開始位置后面的長度,則只保留主串前面字符     *(d + pos -1) = '/0';   else   {     for(i=pos+len-1; i<=l; i++)       *(d + i - len) = *(d + i);     *(d + l - len) = '/0';   //結束字符   }    return d; }  //子串定位 int String_Index(char *d, char *s, int pos) {   int i = pos - 1, j = 0, ld, ls, b=0;    ld = String_Length(d);   ls = String_Length(s);   while(i < ld && j<ls)   {     if(*(d+i) == *(s+j))  //當前字符相等,則繼續匹配     {       i++;       j++;     }     else          //下一趟匹配     {       i = i - j + 1;       j = 0;     }   }   if(j == ls)     //匹配成功     return (i - ls + 1);   else     return 0; }  //輸出串 void String_Show(char *s) {   while(putchar(*s++));   printf("/n"); } 

上面的代碼就是串的相關操作。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品9999| 深夜成人在线观看| 亚州精品天堂中文字幕| 欧美日韩亚洲天堂| 国产成人综合av| 国产亚洲一级高清| 亚洲性xxxx| 亚洲第一页中文字幕| 国产精品美女无圣光视频| 国产精品高清在线| 91精品免费视频| 欧美情侣性视频| 欧美丰满少妇xxxxx做受| 久久偷看各类女兵18女厕嘘嘘| 欧美另类在线观看| 久久成人av网站| 中文字幕亚洲欧美日韩在线不卡| 国产欧美一区二区三区四区| 欧美国产精品人人做人人爱| 成人av资源在线播放| 欧美激情亚洲另类| 日韩在线免费观看视频| 91精品国产91久久久久久最新| 欧美一区二区色| 亚洲电影免费观看高清完整版在线观看| 一本久久综合亚洲鲁鲁| 91牛牛免费视频| 久久久免费在线观看| 久久精品视频va| 日韩精品视频在线| 国产91精品网站| 久久久影视精品| 不卡av在线播放| 狠狠躁夜夜躁人人爽超碰91| 欧美一区二粉嫩精品国产一线天| 欧美高清在线观看| 欧美一级在线播放| 日本成人精品在线| 97超碰国产精品女人人人爽| 精品久久香蕉国产线看观看gif| 国产精品视频久| 久久久这里只有精品视频| 上原亚衣av一区二区三区| 国产亚洲精品激情久久| 亚洲精品国产美女| 亚洲人成电影在线播放| 欧美一区二区三区免费观看| 国产亚洲一级高清| 欧美夜福利tv在线| 国产午夜精品视频| 欧美久久精品一级黑人c片| 国外色69视频在线观看| 亚洲国产精品久久91精品| 国产精品美女久久| 亚洲欧美一区二区三区情侣bbw| 国内精品免费午夜毛片| 精品二区三区线观看| 日韩精品免费综合视频在线播放| 97久久精品人搡人人玩| 国产欧美va欧美va香蕉在| 亚洲综合中文字幕在线观看| 欧美一级视频在线观看| 欧美孕妇孕交黑巨大网站| 高清欧美一区二区三区| 国产中文欧美精品| 亚洲视频在线观看视频| 欧美一级大胆视频| 国产日本欧美在线观看| 性亚洲最疯狂xxxx高清| 国产精品香蕉在线观看| 日本欧美中文字幕| 久久视频中文字幕| 久久国产精品网站| 亚洲精品av在线| 欧美激情国产日韩精品一区18| 亚洲成人精品久久久| 青草热久免费精品视频| 国产精品第8页| 欧美日韩免费网站| 亚洲国产成人精品电影| 久久久亚洲国产天美传媒修理工| 欧美精品日韩三级| 欧美激情第1页| 欧洲美女免费图片一区| 欧美激情一区二区三区在线视频观看| 日韩av在线免费观看| 九九久久久久99精品| 亚洲级视频在线观看免费1级| 欧美黄色三级网站| 欧美激情视频免费观看| 欧美激情欧美激情在线五月| 91久久国产精品| 在线看日韩欧美| 日韩欧美在线播放| 日韩精品视频免费专区在线播放| 久久精品免费电影| 国产视频丨精品|在线观看| 色伦专区97中文字幕| 97碰碰碰免费色视频| 亚洲女人天堂视频| 免费av在线一区| 久久精品电影一区二区| 91精品国产综合久久香蕉最新版| 久久精品视频中文字幕| 日本亚洲欧洲色α| 日韩国产高清污视频在线观看| 午夜免费在线观看精品视频| 欧美大片免费观看| 日韩欧美国产中文字幕| 亚洲理论在线a中文字幕| 日韩精品在线观看网站| 久久久久久久久久久人体| 亚洲精品一区av在线播放| 国产伊人精品在线| 尤物九九久久国产精品的特点| 亚洲精品在线视频| 欧美孕妇与黑人孕交| 俺也去精品视频在线观看| 97久久超碰福利国产精品…| 热久久免费视频精品| 一区二区三欧美| 97香蕉久久超级碰碰高清版| 中文国产成人精品久久一| 亚洲国产精彩中文乱码av| 最近免费中文字幕视频2019| 亚洲缚视频在线观看| 国产一区私人高清影院| 欧美在线激情视频| 日本成人精品在线| 亚洲无线码在线一区观看| 中文字幕亚洲情99在线| 欧美激情视频在线免费观看 欧美视频免费一| 欧美激情精品久久久久久免费印度| 国产精品一二三在线| 久久99精品久久久久久噜噜| 91po在线观看91精品国产性色| 欧美激情一区二区三区成人| 亚洲qvod图片区电影| 亚洲xxxx3d| 日韩精品亚洲元码| 国产成人亚洲综合91| 伊人男人综合视频网| 久热精品视频在线观看| 国产91|九色| 日韩av在线天堂网| 狠狠色香婷婷久久亚洲精品| 久久免费精品日本久久中文字幕| 91国产一区在线| 欧美性猛交xxxx黑人| 91成人国产在线观看| 国产大片精品免费永久看nba| 奇门遁甲1982国语版免费观看高清| 亚洲人成绝费网站色www| 中文字幕一区电影| 免费av一区二区| 91精品在线一区| 91中文在线视频| 精品调教chinesegay| 午夜剧场成人观在线视频免费观看| 国产伊人精品在线| 欧美午夜激情小视频| 国产极品jizzhd欧美| 福利二区91精品bt7086| 亚洲精品电影在线观看|