第四章 串 String 2007.9.

Slides:



Advertisements
Similar presentations
王 子 坊 《洛陽伽藍記》 主講教師:張其昀.
Advertisements

电子成绩单项目实现.
四資二甲 第三週作業 物件導向程式設計.
第六讲 指针与字符串 —— 为什么指针 —— 持久动态内存分配 —— 字符串(字符数组).
第九章 字符串.
Linked List Operations
單向鏈結串列 Singly Linked Lists.
第四章 串 2018/11/13.
第4章 串 串的基本概念和C语言的串函数 串的存储结构 动态数组实现的顺序串 串的模式匹配算法——BF算法 主要知识点.
第6章 佇列(Queues) 6-1 佇列的基礎 6-2 佇列的表示法 6-3 環狀佇列 6-4 雙佇列.
数据结构 Data Structure 主讲人:王国军,郑瑾 中南大学 中南大学信息院计科系
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
程序设计II 第三讲 字符串处理.
C语言高级编程(第四部分) 字符串 北京大学 信息科学技术学院.
2.5 字符串.
第12章 樹狀搜尋結構 (Search Trees)
C常用函数 输入输出 stdio.h 字符串处理 string.h 工具函数 stdlib.h 数学函数 math.h
Introduction to the C Programming Language
Chap 8 指针 8.1 寻找保险箱密码 8.2 角色互换 8.3 冒泡排序 8.4 电码加密 8.5 任意个整数求和*
线性表小结 元素之间的线性关系 顺序表 顺序表:元素相邻存储 单链表:后继指针链接 一维数组 给定下标随机存取
数据结构——串 1/15.
第四章 串和数组(一) 1/.
串和数组.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第五章 指针 5.1 指针的概念和定义 5.2 指针运算 5.3 指针和数组 5.4 字符串指针 5.5 指针数组 5.6 指向指针的指针
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
数 据 结 构 Ch.4 串 计 算 机 学 院 肖明军
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
THE C PROGRAMMING LANGUAGE
4.1 串的抽象数据类型的定义 4.2 串的表示和实现 4.3 串的模式匹配算法.
字符串和字符数组 字符串的输入和输出 字符串的基本操作
第四章串 4.1 串类型定义 4.2 串的表示和实现 4.3 串的模式匹配算法 4.4 串操作应用举例.
第四章 串.
第五章 习题课 电子信息与计算机科学系 曾庆尚.
顺序表的插入.
第五章 串和数组 5.1 串的定义和操作 5.2 串的表示和实现 5.3 字符串应用 5.4 字符串匹配算法 5.5 数组
第四章 串.
自我參考結構 (self-reference – 1)
7.1 广义表的概念 广义表是n(n≥0)个数据元素组成的序列,其中每个数据元素或是单个数据元素(简称原子),或仍然是一个广义表 。
顺序表的删除.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C语言复习3----指针.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
第五章 串和数组 5.1 串的定义和操作 5.2 串的表示和实现 5.3 字符串应用 5.4 字符串匹配算法 5.5 数组
第7章 樹與二元樹(Trees and Binary Trees)
挑戰C++程式語言 ──第8章 進一步談字元與字串
5.1 串的基本概念 5.2 串的存储结构 5.3 串的基本运算 5.4 模式匹配 5.5 串在文本编辑中的应用
函式庫補充資料.
单链表的基本概念.
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
第 四 讲 线性表(二).
字符串 (String) 字符串是 n (  0 ) 个字符的有限序列, 记作 S = “c1c2c3…cn” 其中,S 是串名字
C qsort.
C程序设计.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第四章 串 £4.1 串的定义 £4.2 串的顺序存储结构 £4.3 串的链式存储结构 £4.4 串的应用—文本编辑
第4课时 绝对值.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
_03宽字符与Unicode编程 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
1.4WIN32中的宽字符.
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
本节内容 1.二叉排序树的定义 2.二叉排序树的查找操作 3.二叉排序树的插入操作 4.二叉排序树的删除操作 5.二叉排序树的总结
第六章 复合数据类型 指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete
第11章 字符和内存处理 一、字符数组、指针和字符串的初始化作用 二、strlen函数确定字符串有效长度 三、strcpy函数拷贝字符串.
台大資訊工程學系 資料系統訓練班 第119期 吳晉賢
第二章 线性表 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
Presentation transcript:

第四章 串 String 2007.9

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

串的基本操作 对于串的基本操作,许多高级语言均提供了相应的运算或标准 库函数来实现。下面仅介绍几种在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

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

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++); }

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

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)__; }

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; }

2005-1[函数2.2说明] 函数long fun2(char*str)的功能是:自左至右顺序取出非空字符串str中的数字 字符形成一个十进制整数(最多8位)。 例如,若字符串str的值为“f3g8d5.ji2e3p12fkp”,则函数返回值为3852312。 [函数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; }

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;  }

2004-1[函数2.2说明] 函数f(char *str,char del)的功能是;将非空字符串str分割成若干个子字符串并 输出,del表示分割时的标志字符。例如若str的值为“33123333435”,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)__;}  }

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

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