Presentation is loading. Please wait.

Presentation is loading. Please wait.

第四章 串 String 2007.9.

Similar presentations


Presentation on theme: "第四章 串 String 2007.9."— Presentation transcript:

1 第四章 串 String 2007.9

2 一、串和基本概念 串(String)是零个或多个字符组成的有限序 列。 一般记作S=“a1a2a3…an”
空串:长度为零的串,它不包含任何字符。

3 串的基本操作 对于串的基本操作,许多高级语言均提供了相应的运算或标准 库函数来实现。下面仅介绍几种在C语言中常用的串运算,其它 的串操作见的文件。 1.求串长(strlen) 2.串复制(strcpy) char *strcpy(char to,char from); 该函数将串from复制到串to中,并且返回一个指向串to的开始处 的指针。 3.联接(strcat) char strcat(char to,char from) 该函数将串from复制到串to的末尾,并且返回一个指向串to的开 始处的指针。 4.串比较(strcmp) int strcmp(chars1,char s2); 该函数比较串s1和串s2的大小,当返回值小于0,等于0或大于0时 分别表示s1<s2\s1=s2或s1>s2

4 串的存储结构 typedef struct node{ char data; struct node *next; }lstring;
1.顺序串 顺序串上的插入和删除操作不方便,需要移动大量的字符。 2.链串 可用单链表方式来存储串值 typedef struct node{ char data; struct node *next; }lstring; 一个链串由头指针唯一确定。 这种结构便于进行插入和删除运算,但存储空间利用率太低。

5 2002试题二 [函数2.1说明] 函数strcat(char*si,char*s2)是将字符串s2连接在字符串 ,s1之后,构成一个首指针为s1的字符串。 [函数2.1) void strcat(char *sl,char *s2) { while(*s1!='\0') ; (1) : for( ; (2) ;s1++,s2++); }

6 1999试题一 <函数1.1说明> 函数strcpy(char *to,char *from)将字符串from复制到字 符串to. void strcpy(char *to, char *from) {while (____(1)____);}

7 2001 试题一 [函数1.1说明] 函数strcmp()是比较两个字符串 s 和 t 的大小。若 s < t 函数返回负数;若 s = t 函数返回0;若 s > t,函数返回 正数。 int strcmp(char *s,char *t) { while ( *s && *t && __(1)__){     s++; t++ ;     }     return __(2)__; }

8 2003[函数2.1说明] 函数char *strrchr(char*s,char ch)的功能是在字符串s中 寻找字符ch若ch出现在字符串s中,则返回最后一次出 现时的位置,否则返回NULL。 [函数2.1] char *strrchr(char *s,char ch) { char*p; p = __(1)__; /*p指向字符串s的结束标志*/ while( --p >= s) if(__(2)__) return p; return NULL; }

9 2005-1[函数2.2说明] 函数long fun2(char*str)的功能是:自左至右顺序取出非空字符串str中的数字 字符形成一个十进制整数(最多8位)。 例如,若字符串str的值为“f3g8d5.ji2e3p12fkp”,则函数返回值为 。 [函数2.2]   long fun2(char *str)   { int i=0; long k=0; char *p=str ;    while (*p != ‘/0’&& __(3)__ ) {      if(*p ?=‘0’&& *p ?=‘9’){      k=___(4)___+*p-‘0’;      ++i;      } ___(5)___;     }    Return k; }

10 2004-1[函数2.1说明] 函数palindrome(chars[])的功能是:判断字符串s是否为回文字符 串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读 都一样时,称该字符串是回文字符串,例如:“LEVEL”是回 文字符串,而“LEVAL”不是。 [函数2.1]  int palindrome(char S[])  { char *pi,*pj;   pi=S;pj=s+strlen(S)-1:   while ( pi<pj && __(1)__){    pi++; pj--;   }   if(__ (2)__)return-1;   else return 0;  }

11 2004-1[函数2.2说明] 函数f(char *str,char del)的功能是;将非空字符串str分割成若干个子字符串并 输出,del表示分割时的标志字符。例如若str的值为“ ”,del的值为 ‘3’,调用此函数后,将输出三个子字符串,分别为“12”、“4”和“5”。 [函数2.2]  void f(char*str,char del)  { int i,j,len;   len = strlen(str);   i = 0;   while (i<len){    while (__(3)__) i++;  /*忽略连续的标志字符*/    /*寻找从str[i]开始直到标志字符出现的一个子字符串*/    j = i + 1;    while (str[i] !=del && str[j] !=‘\0’) j++;    __ (4)__=“\0”;/*给找到的字符序列置字符串结束标志*/    printf(“ %s\t”,&str[i]): ’    __ (5)__;}  }

12 2005-2 字符串"computer" 中长度为3的子串有__(32)_ 个。
(32)A.4      B.5  C.6       D.7 字符串是一种线性表,其特殊性表现在_(37)_ (37)A.它的数据元素是一个字符    B.它可以链式存储   C.它可以顺序存储    D.它的数据元素可以是多个字符 以下关于字符串的判定语句中正确的是__(7)__。 (7)A.字符串是一种特殊的线性表  B.串的长度必须大于零 C.字符串不属于线性表的一种  D.空格字符组成的串就是空串

13 答案 2004-1 (1)*pi == *pi (2)pi<pj 或 *pi != *pj (3)str[i] == del (4)str[j] (5) i = j+1


Download ppt "第四章 串 String 2007.9."

Similar presentations


Ads by Google