文学助手研究
文学研究会对俄苏文学的译介介绍

一
目的 ,开 始 译介 外 国 文学 ,尤 其 注 重 译
二、 “ 五 四”前 的俄译 文 学
俄 苏 文 学 的翻 译 始 于 十 九 世 纪末 中西
介 十 九 世 纪 的 俄 罗 斯文 学和 苏联 文 学 。文 学 研 究 会 为 了建 设 现 实 主义 新 文 学 这 一 目 标 , 曾热 切 的 从 俄 罗 斯 文 学 中吸 取 精 华 。 早在1 9 2 0 年 ,沈 雁 冰 在 《 俄 国 近代 文 学杂
国文 学有 了不 同于 之 前 的新 的 认 识 , 为我
( 包 括 印 度 , 丹麦 ,挪 威 ,瑞 典 ,芬 兰 , 冰 岛 ,匈 牙 利 等 弱 小 国家 文 学作 品译 介 共 计4 2 1 部 ) :文 学研 究 会译 介 现 、 当代 的外
国文 学 ,采 取 了编 写 简 明 消 息 、 出版 专 号
神 ,不 得 不 先 打 破 那 些 束 缚 精神 的枷 锁 镣 铐 。 ”十 月 革 命 一 声 炮 响 , 俄 国给 我 们 不
研 究会 。 民 国九 年 , 郑 振铎 、耿 济 之 等 在 北平 计 划 组 织 一 个 文 学 团体 , 出版 一 种 文 学杂 志发 表 创 作 ,用 以介 绍 西洋 文 学 ,整 理 旧 文学 。适 商 务 编 译 所 长 高梦 旦北 来 , 与其 谈 话 ,决 定 将 商 务 所 出 版 的 《 小 说 月 报 》 改 组 , 尽 量 登 载 新 文 学 的 作 品 , 但 名 称 不 改 。 同年 1 2 月 4日 在 耿 济 之 家 开 第 二 次 文 学研 究会 筹 备 会 ,到 会 的 有 蒋 百 里 、
二十世纪西方文学理论

作者简介
特雷·伊格尔顿,著名马克思主义理论家和批评家,牛津大学圣凯瑟琳学院教授,著有《新左翼教会》、 《莎士比亚与社会》、《马克思主义与文学批评》等。伍晓明,北京大学比较文学硕士、(1986)、英国萨塞克斯 大学(Universityofsusser)博士(1996),现任新西兰坎特伯雷大学(UnivertyofCanterbury)语言暨文化研究 学院高级讲师,研究方向为中国思想传统及比较哲学。中文近著有《吾道一以贯之:重读孔子》、《有(与)存在: 通过“存在”而重读中国传统之“形而上”者》,译著则包括伊格尔顿的《二十世纪西方文学理论》及马丁·华 莱士的《当代叙事学》等。
图书目录
中译本新版译者前言 第二版序 序 导言:文学是什么? 1英国文学的兴起 2现象学、诠释学、接受理论 3结构主义与符号学 4后结构主义 5精神分析 结论:政治批评 后记
创作说明
特里·伊格尔顿(TerryEagleton,1943-),当代著名的西方马克思主义文学理论家和具有独特风格的文 化批评家。
从20世纪80年代后期以来,伊格尔顿进行的一项重要工作是更娴熟地运用文化政治批评方法来剖析和批英国曼彻斯特附近的萨尔福一个工人阶级家庭,1961年进入剑桥大学,在这所充满贵族气息的大学, 出身工人阶级的伊格尔顿倍感孤独,于是投身于学校文化圈外的政治运动中。在校学习期间,伊格尔顿深受老师 威廉斯的影响,阅读和钻研了马克思本人以及“西方马克思主义”(西马)理论家的著作,并逐渐成长为一位马克 思主义批评家。1964年大学毕业后,应威廉斯的邀请,留在剑桥担任他的助手,作助理研究员。1969年转到牛津 大学任教,长期担任牛津大学凯瑟琳学院沃顿英文和文学理论讲座教授,现任曼彻斯特大学英文讲座教授。
二十世纪西方文学理论
研究词语的意思及造句

研究词语的意思及造句研究,汉语词语,意思是主动寻求根本性原因与更高可靠性依据,从而为提高事业。
下面是小编为大家整理的关于研究词语的意思及造句,希望对你有所帮助,如果喜欢可以分享给身边的朋友喔!研究词语的解释钻研;探索。
南朝宋刘义庆《世说新语·文学》:“ 殷仲堪精覈玄论,人谓莫不研究。
” 唐李山甫《古石砚》诗:“波浪因文起,尘埃为废侵。
凭君更研究,何啻直千金。
”《元史·铁木儿塔识传》:“ 鉄木儿塔识天性忠亮,学术正大,伊洛诸儒之书,深所研究。
” 清刘大櫆《潄润楼记》:“日有餘暇,则又自取六艺而研究之。
” 曹禺《北京人》第一幕:“ 袁先生并不是个可怕的怪物!他是研究人类学的学者。
”研究词语的近义词斟酌[ zhēn zhuó ]琢磨[ zhuó mó ]商榷[ shāng què ]研究词语的造句1、四种鲜为人知的专志与明清以来的洪洞问题研究。
2、为了成人之美,我放下手中的研究课题来当他的助手。
3、对于这个问题我们还得仔细研究。
4、姐姐自学成才,被大学破格录取为研究生。
5、科学家应以严谨的态度搞研究。
6、他对古文字的研究有特殊的癖好。
7、研究数据的计算不能有一点误差。
8、他抽出剩余时间进行专题研究。
9、他对趣味数学很有研究。
10、我国卓越的科学家竺可桢写成了《中国近五千年来气候变迁的初步研究》。
11、往往需要专业人员齐心协力,共同研究,才能得到成功。
12、处理问题时,没有经过调查研究,我们不可随意判断。
13、埋藏在地底深处的化石虽然挖掘起来十分困难,但是研究价值却是很高的。
14、为改变贫困地区的落后面貌,县长经常到基层视察,做调查研究。
15、搞科学研究应该尊重客观事实,崇尚真理,不迷信权威。
16、这件案子非常离奇,我们要好好地分析研究。
17、他在自然科学研究领域锋芒毕露,创造了一个个突破,填补了国内相关项目的空白。
18、我决心好好学习,上大学,读研究生。
二十世纪中国近代文学研究学术历程之回顾现当代文学论文

中国近代文学在急风暴雨中步履艰难而又急促地走完了它的全程,在中国文学的近代化方面迈出了第一步。
中国近代文学既是中国古典文学的发展和终结,又是现代文学的胚胎和先声,并开启了中国新文学现代化的方向和道路。
中国近代文学是历史转型期的文学,又处于中西文化交流和撞击的大潮之中,因此它具有许多不同于古代文学的新内蕴、新形式和新特点,有很高的学术价值和研究价值。
一个世纪以来中国近代文学研究,倘与中国古代、现代文学研究相比,其广度和深度都有一定的差距。
但,许多专家学者在这块处女地上付出的劳动和作出的贡献仍值得我们珍视。
今天适逢世纪之交,回顾一下本世纪来近代文学研究的学术历程,不论是从总结中国文学研究学术史的角度,还是对推动21世纪的近代文学研究,都具有重要的意义。
一近代文学的终点是“五四”运动,然而早在“五四”前,就已有人着手近代文学的研究工作,如寅半生(钟骏文)的《小说闲评》(1906)、俞明震《觚庵漫笔》(1907 —1908)、刘师培的《论近世文学之变迁》(1907)、李详的《论桐城派》(1909),以上这些笔记和评论文字多是对某一作品和某一文派即兴式的评论,也有关于作家真实姓名的考索和身世的介绍,总的说还比较零碎、肤浅,缺乏系统性、逻辑性和科学性,更谈不到对近代文学整体的探讨和发展规律的揭示。
但在“五四”前的笔记和文章中也有个别有价值的见解,如《谭瀛室随笔》指出《官场现形记》的结构“仿《儒林外史》,每一人演述完峻,即递入他人,全书以此蝉联而下,盖章回小说之变体也”(注:转引自蒋瑞藻编:《小说考证》下册,上海古籍出版1984年版,第415页。
)。
再如黄人的《小说小话》评《三侠五义》云:“豪情壮采,可集剑侠传之大成,排《水浒记(传)》之壁垒”;“而摹写人情冷暖,世途险恶,亦曲尽其妙,不独为侠义添颊毫也”(注:《晚清文学丛钞·小说戏曲研究卷》,中华书局1960年版,第375—376页。
)。
像如上这类中肯的、有见地的评论在当时并不多见。
北魏孝文帝文学研究

北魏孝文帝文学研究北魏孝文帝文学研究提纲:一、北魏孝文帝简介二、北魏文学概况三、北魏孝文帝文学成就四、北魏孝文帝与杨衒之五、北魏孝文帝文学思想六、《求心论》的创作与思想七、北魏孝文帝文学影响八、北魏孝文帝时期的五言绝句九、结论与展望北魏孝文帝,即拓跋宏(字景),是北魏朝廷的第三任皇帝。
他在位时期实行勤俭政策,提倡儒学,努力改善民生。
同时,他也是一位文学家,为北魏文学创作做出了重要贡献。
北魏时期是中国文学发展的重要历史时期,而孝文帝在文学史上的地位也越来越受到重视。
北魏文学以五言绝句和骈文为代表,孝文帝的文学作品也体现了这一时期文学的特点。
孝文帝是北魏时期文学的重要代表人物之一,其文学成就表现在多个层面。
首先,他倡导文学,为文化事业提供了很大的支持。
其次,他自己也是一位文学家,创作了大量的文学作品,成为了当时的文坛巨匠。
在北魏孝文帝治下,杨衒之是其最重要的文学助手之一。
两位文学巨匠之间的合作,对北魏文学的发展起到了积极的推动作用,也成为当时文坛上的佳话。
孝文帝的文学思想主要包括儒家思想和佛教思想。
他在文学创作中秉承“修身、齐家、治国、平天下”的思想,强调人文关怀和儒家教育。
北魏孝文帝最著名的文学作品是《求心论》,这篇文章探讨了人的内心世界,对当时的文化和社会产生了深远影响,成为中国文化史上的重要篇章之一。
北魏孝文帝的文学影响主要表现在以下几个方面:推动了北魏文化事业的繁荣发展;在其时代,他的文学作品受到广泛传播和赞誉;此外,他的文学风格和思想也对后来的文学和思想产生了重要影响。
北魏孝文帝时期的五言绝句,在中国文学史上占据着重要的位置。
这种文学形式简洁明了、抒情生动,尤其在北魏时期风靡一时。
综上所述,北魏孝文帝是中国文学史上的杰出人物,其文学成就以及对文化的推动和影响,在当时和后世都产生了深远的影响。
在今后的研究中,需要对他的文学成就和思想进行更深入的探讨。
1. 北魏孝文帝简介:本提纲介绍了孝文帝的生平和政治事业,为后续的研究提供了重要的背景。
数据结构(C语言版)_第3章 串与数组

char data; struct lnode *next;
}lstring;
3.3.3 串的存储结构——链式存储结构
当结点大小>1时,可以采用块链结构。
#define CHUNKSIZE 100
/*可由用户定义块的大小*/
typedef struct Chunk
第三章 串与数组
本章要点
➢字符串的基本概念与基本运算 ➢字符串的存储和基本运算的实现 ➢数组的概念和基本运算 ➢数组的存储结构 ➢特殊矩阵的压缩存储及运算 ➢广义表的概念及相关术语 ➢广义表的存储形式
3.1 “文学研究助手”案例导入
“文学研究助手”引例:请从下面的英文文章里,统计其中 good出现的次数和位置,并查找单词the所在的行号,该行中出 现的次数以及在该行中的相应位置。
3.4.1 数组的定义
数组是n个具有相同类型的数据元素构成的有限序列,数组 中的数据是按顺序存储在一块地址连续的存储单元中。
数组中的每一个数据通常称为数组元素,数组元素用下标 区分,其中下标的个数由数组的维数决定。
若线性表中的数据元素为非结构的简单元素,则称为一维 数组,又称为向量;若一维数组中的数据元素又是一维数组结 构,则称为二维数组;依次类推,若二维数组中的元素又是一 个一维数组结构,则称作三维数组。
3.3.4 串的基本操作的实现算法
第二种顺序存储方式下几种基本操作的算法
算法1:串连接操作 算法2:串比较操作 算法3:取子串操作 算法4:串插入操作 算法5:串删除操作 算法6:串置换函数 算法7:子串定位操作
3.3.5 串的应用
【例3-1】设计一个算法求串s中出现的第1个最长重复子串 及其位置。
互联网与外国文学研究的现代化
互联网与外国文学研究的现代化作者:曾华来源:《文学教育·中旬版》2013年第07期[摘要] 互联网的普及对于外国文学研究方法产生的影响是广泛而深远的,本文试图从互联网所引发信息化浪潮的角度进一步探索如何认识、看待和使用互联网络以促进外国文学学术研究现代化的路径。
笔者认为,现代网络传媒在信息技术领域的革命对于外国文学研究来说,集中地表现在对网络资源数据丰富化方面。
学术研究朝着信息化方向发展,并且迅速进入网络时代。
可以预言,在信息化时代外国文学研究必然同互联网络结合,并借此推动学术研究的发展。
[关键词] 互联网;外国文学研究;数字化;自动化早在上个世纪50年代末,英国学者 C.P.Snow 就在发表的文章“两种文化与科学革命”中指出,人文科学和自然科学这两种互不沟通的文化必将导致这两个领域的人隔阂日深,最终会阻碍整个社会的正常运行,并因此会成为解决世界性问题的巨大路障。
1963 年,Snow又发表《再论两种文化》,进一步深化了自己的思想,对造成这两种文化分离的英国教育制度和社会提出批判。
实际情况并没有snow预料的那么糟糕,随着电子信息技术应用的普及和互联网的快速发展,科学与人文科学分道扬镳的情况并没有出现,反而互相融合。
以外国文学为例,形式各样的网站、博客和电子布告栏系统因为科学技术的不断发展而相继问世,并逐渐成为外国文学研究的重要组成部分。
可以预言,科学与人文科学不是分离,而是逐步融为一体。
面对日益普及的互联网技术,外国文学的学术研究已经不可能脱离科学而独立在。
因此,重新审视、看待和使用作为先进技术代表的互联网络促进外国文学作品研究的现代化,是每个学者都需要思考的问题。
一、互联网时代下文献保存格式的变革对外国文学研究的巨大推动作用以文本为固定形态的存在的模式是数千年来我们阅读相关文学作品或者学术论文的固定格式,它们是由纸张装订而成,信息量有限,而且不易保存。
今天,由于电子信息技术的发展进步,越来越多的人可以有更多的选择来确定他们要的阅读方式,最常见的便是数字文本,例如数字处理软件word和wps。
《文学理论研究》读后感
《文学理论研究》读后感
《文学理论研究》是一本深入探讨文学本质和意义的重要著作。
通过阅读这本书,我深刻感受到文学不仅是一种艺术形式,更是人类思想和情感的表达方式,是对世界的观察和思考。
在书中,作者对文学的定义、功能和意义进行了全面而深入的探讨。
他指出,
文学是一种通过语言和形式表达情感、思想和体验的艺术,是人类对世界和自身的反思和表达。
文学不仅是一种娱乐和享受,更是一种认知和启迪,可以帮助人们理解自己和他人,认识世界和生活。
在书中,作者还探讨了文学与现实生活的关系,指出文学不仅是对现实的再现,更是对现实的批判和反思。
通过文学作品,人们可以看到作者对社会、人性和价值观念的思考和质疑,可以从中获取启示和警示,引发对自身和社会的思考和行动。
阅读《文学理论研究》,让我对文学有了更深入的理解和认识。
我意识到文学
不仅是一种艺术形式,更是一种思想和情感的表达,是对世界和生活的观察和思考。
通过文学,我们可以感受到作者的情感和思想,可以体验到不同的生活和世界,可以认识到自己和他人的共同点和差异,可以启发和启示自己的思考和行动。
总的来说,阅读《文学理论研究》是一次深刻而有益的阅读体验。
通过这本书,我对文学有了更深入的理解和认识,对世界和生活有了更深刻的思考和体验。
我相信,在今后的阅读和生活中,我会更加珍视和理解文学的意义和价值,更加努力地去感受和体验文学的魅力和力量。
愿我们都能在文学的海洋中感受到无限的智慧和美丽,获得更多的启示和启迪。
novelai的使用
novelai的使用一、介绍novelainovelai是一款人工智能写作助手,能够帮助用户创作文学作品。
它基于强化学习和自然语言处理技术,可以生成连贯、富有创造力的小说段落,并提供现成的小说模板供用户参考。
使用novelai,用户可以省去大量的创作困扰和时间。
二、novelai的优势novelai在其他写作助手中有以下几个明显的优势:1. 强化学习算法novelai使用了强化学习算法,通过与用户进行互动学习,并不断优化生成的文本质量。
它可以根据用户的反馈调整生成的内容,使得文本更加符合用户的需求。
2. 多样化的创作风格novelai提供了多种创作风格的模板,用户可以选择自己喜欢的风格进行创作。
无论是浪漫、悬疑、科幻还是历史小说,novelai都能提供相应的模板,并生成与所选风格相符的文本。
3. 灵活的编辑与修改功能用户可以通过简单的命令指示,对novelai生成的文本进行修改和编辑。
novelai 会根据用户的要求进行相应的修改,使得生成的文本更加符合用户的意图。
三、novelai的使用步骤使用novelai可以按照以下步骤进行:1. 安装novelai应用在您的设备上下载并安装novelai应用。
novelai提供了基于Windows、Mac和Linux的版本,可以根据自己所用的设备类型进行安装。
2. 登录并选择创作风格打开novelai应用后,使用您的账号登录。
登录后,您可以选择您想要创作的风格,novelai会根据您的选择为您提供相应的模板。
3. 选择故事情节在选择创作风格后,novelai会为您提供多个故事情节供选择。
您可以选择一个您喜欢的情节作为创作的基础,novelai会根据您的选择生成相应的段落。
4. 修改和编辑文本novelai生成的段落可能不完全符合您的期望,您可以通过命令指示novelai对文本进行修改和编辑。
novelai会根据您的指示进行相应的修改,直到满足您的要求为止。
如何用C语言编写“文学研究助手”
0l =皿 I T s
I
++
w ib i h et + l  ̄ r un-) er 1 to  ̄ l
}
es le
jnx = e忸 l 湎> rtr 一 eunO I 聃
es le
r ur et n
综合以上 3 个函数的实现, 我们可以写出sac erh函数 , 如下: vi sa h hr a [ Sr gk y , o er ( a meStn eO, d cc n ] i , 查找函数 , 该函数是罄个程序 的重要部分, 对于输入的每—个要 增溅 的关键字, 从小说文件中逐行读取 字符 串查找
[ k 1 ̄ k 2 i + ]一 + ] - s … 一】 l )
S tn x , S ig et , r t ; 存放从小说文件读取的— 行字符串 it- Q , n -1 k, 用于存放行号J = i 用于存放列号 用于输出 格式的控制 FL 堆 IE i p f e( m ,’ / t =o n a er ,  ̄ p n '狮 打开小说文件 ’
信 息产 业
匹配失败的标志:比 较到主串的 。’且此时子串的比菠 /, 0 位不等于
。’ , o 0
+ + + k
・1 ・ l 3
生成 K P改进算法的 nx f M e !组代码 j c
it neL tn , tn jt o) n Id x Sr gS Sr gTn s S i S i p ( it= o. l n ips= ; j w i (= l&&< 嘞 hli S l j= e< O
{
k- -  ̄
而同时由于 : — +弼 - + 一 l l k 1 k 2 1 k 1 k ・ l s— + 一 + 1 b =j … 一 所 以 : lI. ̄ -l I- +]]k 2 。 -】 a l2 ・ k l U k 1I + ] l a ]. =, I- 。 1 若 T T , Tnx[= [ 那么 :【 I _ 圃 即 [ t Tj e 1 ]  ̄ , T1' 】圆…T 1 ’ Tik 1 一I I I +] — Y [ k 2 "i 邢】 j +] r l , - … l 则根据定义:e ̄ 1 k lnx + nx +] + = el 1 =  ̄ 若 T = ,  ̄11] 1— Ik= 一 + T 一 + ] I l可, T 硼 即 ]2 k lI ̄ 1 …3 I ] k 1 k 2 i 即 l …1 — 时与1】 f发生不等。把 撇 串, U 即模式串第 k 位发生失配, 根据 K MP 算法的基本思路, 当模式串第 k 位发生失配时, 模式串应移动到第 nxk et] [ -’ k位与主串进行比较。 此时 : 1I , 一 1— ‘ll k+] 一 】 1 】 ・ II ‘l b k li ‘2 + l— 一 1 。 然后再 比较 1, 珂 若相等 , 同情况 1nxj1 k 1 e l :e( ] ’ =nx + =+ ; 若不 相等, 返回对隋况 2 的头进行比较。 若 nx = 1即发生失配元素的前- 个元素与第—个元素 4 t e@l一 , 一 o ̄ f 不等, 该应使该失配元素直接与第—个元素比较 ,el 1 。( 睛况可 nx + O 该  ̄ 与第—种隋况合并( n xO 一 ) 因为 et] 1) [= 从 n x ̄k e(= 开始比皎, 首先将 k 自身对齐 比较( 与 找可以与 j 对齐比 较的最长子串) , 如果相等, f p , 则 1 【 满足情况 1 若不相同, ) n 。 即模式串第
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【问题描述】文学研究人员要统计某篇英文小说中某些形容词的出现次数和位置.试写一个实现这一目标的文学统计表,称为"文学研究助手"【基本要求】a。
英文小说存在于一个文本文件中.待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后完成.程序的输出结果是每个词的出现次数和出现位置所在行的行号,格式自行设计b。
模式匹配要基于KMP算法c。
整个统计过程中只对小说文字扫描一次,以提高效率【测试数据】以当前的源程序文件作为测试目标【实现提示】约定小说中的词汇一律不跨行【思路演示】【代码过程】1。
//base.h//------------------- 公用的常量和类型 ----------------------------#include<stdio.h>#include <malloc.h>#include <stdlib.h>#include <string.h>//函数结果状态代码#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status; //函数的返回值//~2。
//hstring.h//----------------- 串的堆分配存储表示---------------------------typedef struct{char *ch; //若是非空串,则按串长分配存储区,否则ch为NULL int length; //串长度}HString;//----------------- 栈的基本操作的算法实现-------------------------------- Status StrInit(HString &T){//初始化串T.ch=NULL; T.length=0;return OK;}Status StrAssign(HString &T, char *chars){//生成一个其值等于串常量chars的串T//if(T.ch) free(T.ch); //释放原有的串空间int len; char *c;for(len=0, c=chars;*c;++len,++c); //求chars的长度i;if(!len) {T.ch=NULL; T.length=0;}else{if( !(T.ch = (char *) malloc(len*sizeof(char) ) ))exit(OVERFLOW);for(int i=0;i<len;i++) T.ch[i] = chars[i];T.ch[i]='/0'; //结尾加上/0T.length = len;}return OK;}int StrLength(HString s){//返回串长度return s.length;}void StrPrint(HString s){//打印串for(int i=0;i<s.length;i++)printf("%c",s.ch[i]);//printf("/t");}int Index(HString s,HString t, int pos){//返回子串t在主串s中第pos个字符之后的位置。
如不存在,则返回0 int i=pos,j=1;while(i<=s.length && j<=t.length){if(s.ch[i-1]==t.ch[j-1]) i++,j++;else i=i-j+2,j=1;}if(j>t.length) return i-t.length;else return 0;}int Next(HString s,int j){//KMP模式匹配的next函数if(j==1) return 0;for(int k=j-1;k>1;k--){for(int i=1;i<k;i++){if(s.ch[i-1] != s.ch[j-k+i-1])break;}if(i==k) break;}return k;}int Index_KMP(HString s,HString t, int pos){ //KMP算法int i=pos,j=1;while(i<=s.length && j<=t.length){if(j==0 || s.ch[i-1]==t.ch[j-1]) i++,j++;else j=Next(t,j);}if(j>t.length) return i-t.length;else return 0;}int IsNotCharactor(char ch){//判断该字符是不是字母return !(ch>='a'&&ch<='z' || ch>='A'&&ch<='Z'); }int StrCount_KMP(HString s,HString t,int pos){//求串t在s中出现的次数int i=pos,j=1;int count=0;while(i<=s.length ){if(j==0 || s.ch[i-1]==t.ch[j-1]) i++,j++;else j=Next(t,j);if(j>t.length) {//if(s.ch[i-1]==' '||s.ch[i-1]=='/0') //如果下一个字符为' ',或者为串的结尾// if(s.ch[i-t.length-2]==' ' || i-t.length-2<0) //并且前一个字符为' ',或者为串的开头if(IsNotCharactor(s.ch[i-1]) && IsNotCharactor(s.ch[i-t.length-2])) //如果该字符串的前一和后一字符不是字母,说明找到了count++; //次数++j=1;}}return count;}3。
//linklist.h//-------------------- 行数据链表 --------------------------------------typedef struct LRowDataElem{int row; //所在行int count; //次数}LRowDataElem;typedef struct LRowNode{LRowDataElem data;struct LRowNode *next;}LRowNode,*RowLink;typedef struct{RowLink head,tail;int len;}RowLinkList; //行数据链表//----------------- 行数据链表的基本操作的算法实现 -------------------------------- Status InitList(RowLinkList &L){L.head = (RowLink)malloc(sizeof(RowLink));L.tail = (RowLink)malloc(sizeof(RowLink));if(!L.head || !L.tail ) exit(OVERFLOW);L.head->next = L.tail->next = NULL;L.len =0;return OK;}Status CopyElem(LRowDataElem &e1,LRowDataElem e2){e1.count = e2.count; e1.row = e2.row;return OK;}Status CreateNode(RowLink &rl, LRowDataElem elem){//创建节点rl = (RowLink) malloc(sizeof(RowLink));if(!rl) exit(OVERFLOW);CopyElem(rl->data,elem);rl->next = NULL;return OK;}Status Append(RowLinkList &ls, RowLink link){//附加节点if(ls.head->next == NULL) ls.head->next = link;else ls.tail->next->next = link;ls.tail->next = link;ls.len ++;return OK;}Status PrintList(RowLinkList L){//打印列表RowLink h = L.head->next;while(h ){printf("%d : %d ",h->data.row, h->data.count);h = h->next;}printf(" ");return OK;}4。
//stringLinklist.h//-------------------- 串数据链表 --------------------------------------typedef struct StringNode{HString str; //要查找的串RowLinkList rowlist; //串匹配的行数据列表,每个串对应一个StringNode *next;}StringNode,*StringLink;typedef struct{StringLink head,tail;int len;}StringLinkList;//----------------- 串数据链表的基本操作的算法实现 -------------------------------- Status InitList(StringLinkList &L){L.head = (StringLink)malloc(sizeof(StringLink));L.tail = (StringLink)malloc(sizeof(StringLink));if(!L.head || !L.tail ) exit(OVERFLOW);L.head->next = L.tail->next = NULL;L.len =0;return OK;}Status CreateNode(StringLink &sl, HString str){sl = (StringLink) malloc(sizeof(StringLink));if(!sl) exit(OVERFLOW);StrInit(sl->str);StrAssign(sl->str, str.ch);InitList(sl->rowlist);sl->next = NULL;return OK;}Status Append(StringLinkList &ls, StringLink link){if(ls.head->next == NULL) ls.head->next = link;else ls.tail->next->next = link;ls.tail->next = link;ls.len ++;return OK;}Status StringListCount(StringLinkList &stringLinkList, HString hstrLine,int row){//在串数据链表stringLinkList,读出查找的串strkey,与传入的串hstrLine匹配//如果成功将匹配的次数与行数row,写入相对应的行行数据链表StringLink stringLink = stringLinkList.head->next; //找出第一个串while(stringLink){HString strkey = stringLink->str;int count=StrCount_KMP(hstrLine, strkey,1); //求匹配的次数if(count>0) {RowLink rLink;LRowDataElem data; data.count = count;data.row=row;CreateNode(rLink,data);Append(stringLink->rowlist,rLink); //写入相对应的行行数据链表}stringLink = stringLink->next; //找下一个}return OK;}Status PrintList(StringLinkList L){//打印串数据链表的信息StringLink h = L.head->next;while(h ){printf("字符串:");StrPrint(h->str);printf(" 出现的位置和次数是: ");PrintList(h->rowlist);h = h->next;}printf(" ");return OK;}//~5。