当前位置: 首页 > news >正文

电商网站建设试题东营网站建设怎么建设

电商网站建设试题,东营网站建设怎么建设,做旅行社网站的,网站上传用什么软件做视频教程链式存储方式下字符串的replace运算 ⭐️题目⭐️思路⭐️代码✨定义结点✨打印字符串函数✨计算字符串函数✨初始化字符串函数✨代码解读✨字符串替换函数✨字符串替换函数解读✨ 主函数✨完整代码 实现在链式存储下字符串的replace(S,T1,T2)#xff0c;来自课本习题的一道题… 链式存储方式下字符串的replace运算 ⭐️题目⭐️思路⭐️代码✨定义结点✨打印字符串函数✨计算字符串函数✨初始化字符串函数✨代码解读✨字符串替换函数✨字符串替换函数解读✨ 主函数✨完整代码 实现在链式存储下字符串的replace(S,T1,T2)来自课本习题的一道题目。这篇博客是我自己的思路其中也还有很多不完善的地方也还有很大的局限性。 希望对大家能有一点帮助。 ⭐️题目 试编写一个函数实现在链式存储方式下字符串的replace(S,T1,T2)运算。 ⭐️思路 ①首先题目明确要求在链式存储方式下实现函数所以我们的字符串S以及我们的字符串T1,和要替换T1的字符串T2都必须是链式存储的。 明确了这一点我们首先要初始化创建三个字符串为了方便写一个初始化字符串的函数。 ②关于初始化一个字符串函数采用前插或者尾插都可以。我自己写得是前插。 ③关于替换掉S中T1首先应该是要找T1是否是在S中存在。其次应该计算T1的长度改变有关两个结点的next值举例即 如上图即改变b结点的next值使之指向T2的头节点并改变T2尾结点的next值使之指向T1尾结点的后继结点。 我下面的代码并没有判断T1是否在S中是否存在缺乏稳健性。计算T1的长度的原因是这样以便我们能够很快找到f结点并使T2的尾结点o指向f结点。 ③关于替换如上面所说我们要找到关键结点。 即b结点、m结点和o结点。 b结点的找法是当我们设置一个当前结点开始遍历循环S字符串时也要找一个指针pre来跟踪cur指针当cur指针指向T1的第一个字符时这时q就指向了在了我们的目标结点。 f结点的查找方法是我们计算T2结点的长度length然后cur指针从当前c位置移动length-1个单位这时cur就指向了f结点。 o结点即我们对T2字符串用指针tmp进行遍历当以循环条件whiile(tmp-next)进行循环遍历当不满足条件是tmp恰好指在了尾结点即o结点。 ④最后我们改变相关结点的next值即可。 即pre-nexthead2;,tmp-nextcur; ⑤释放T1.free(head1) ⭐️代码 ✨定义结点 typedef struct node {char data;struct node* next; }linkstrnode;✨打印字符串函数 void printstr(linkstrnode* head) {linkstrnode* cur head;while (cur){printf(%c, cur-data);cur cur-next;} }✨计算字符串函数 int length(linkstrnode* head) {int i 0;linkstrnode* cur head;while (cur){i;cur cur-next;}return i; }✨初始化字符串函数 linkstrnode* Initstr() {int n,i;printf(请输入字符串的长度\n);scanf(%d, n);printf(请依次输入各节点:\n);getchar();//吸收回车linkstrnode* q NULL;for (i 1; i n; i) {char s;scanf(%c,s);//前插linkstrnode* newnode (linkstrnode*)malloc(sizeof(linkstrnode));//产生新的结点newnode-data s;newnode-next q;q newnode;}return q; }在这里插入一个在我自己写代码时的一个报错0x00007FFC8C5325E7 (ucrtbased.dll)处(位于 DataStructure.exe 中)引发的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。 原因就是 使用了malloc函数 但没有包含stdlib.h头文件。 ✨代码解读 ① 首先对于getchar()这一行 在下面的for循环中用scanf来接收从键盘输入的字符。在上面我们知道此时还有一个回车留在了缓冲区如果不将缓冲区中的回车清除那么scanf函数读取到的第一个字符就是回车了而不是从键盘输入的第一个字符。 ② 在for循环中scanf先从缓冲区读取到一个字符然后我们用malloc函数在堆上开辟内存开辟空间的大小即sizeof(linkstrnode),然后让栈上面的局部变量newnode来管理这块内存。 当我们开辟好空间即开辟好一个结点的空间我们就需要通过指针newnode来对这个结点进行赋值。newnode-datas;即将scanf读取到的字符s赋值给newnode的data域。 那关键就在于next域它就关键在可以将我们所输入的字符“连接起来”。 在这里我采用前插的方法。即我使一个字符所在的结点指向空。 然后此时我存下来现在结点的值 qnewnode; 然后第二个结点如是 然后最后一次的q即为这个链表的头节点。 ✨字符串替换函数 //创建字符串替换函数 void strreplace(linkstrnode* head, linkstrnode *head1, linkstrnode* head2) {linkstrnode* pre NULL;linkstrnode* cur head;linkstrnode* q;//q结点作为指向cur结点指针的前驱结点指针int i 0;while (cur){if (cur-data head1-data){while (i length(head1) cur){i;cur cur-next;}break;}else {pre cur;cur cur-next; }}//将T2替换原来T1的位置插入到字符串S中//先找到T2的尾结点linkstrnode* tmp head2;while (tmp-next){tmp tmp-next;}pre-next head2;tmp-next cur; }✨字符串替换函数解读 head指向字符串S的头节点head1是指向字符串T1的头节点T2是指向字符串T2的头节点。 ① 指针cur用来循环遍历S字符串。 ❌❌我这里在S中查找T1字符串不严谨只是判断了cur所指向的当前结点的值是否和T1头结点的值是否相等就直接进行了替换。 当cur所指向结点的值和T1头节点的值不相等时进入else条件体。 直到cur所指向结点的值和T1头节点的值相等。 若相等则pre就指向了–如图(假设d结点即是T1字串第一个结点的值) 这时我们进入if条件体。我们需要的是移动指针cur使之指向T1尾结点值的后一个结点。举例若T1尾结点值为f则我们需要将cur指向g 这时我们就需要直到T1的长度使循环cur移动length-1次即可。 此时cur指向了–如图 此时我们在循环中达到了目的break退出循环即可。 ② 下面我们仍然是利用长度找到T2的尾结点。 ③连接 即pre-nexthead2; tmp-nextcur ✨ 主函数 int main() {printf(*****创建字符串S*****\n);linkstrnode* headInitstr();//创建指向字符串S头节点的指针printf(字符串S为);printstr(head);printf(\n);printf(*****创建字符串T1*****\n);linkstrnode* head1 Initstr();//创建指向字符串T1头节点的指针printf(字符串T1为:);printstr(head1);printf(\n);printf(*****创建字符串T2*****\n);linkstrnode* head2 Initstr();//创建指向字符串T2头节点的指针printf(字符串T2为);printstr(head2);printf(\n);strreplace(head, head1, head2);printf(被替换后的字符串S:);printstr(head);free(head1);//释放T1字符串所占的空间return 0; }✨完整代码 #define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h #includestdlib.h//定义结点 typedef struct node {char data;struct node* next; }linkstrnode;//初始化链式字符串 使用前插 linkstrnode* Initstr() {int n,i;printf(请输入字符串的长度\n);scanf(%d, n);printf(请依次输入各节点:\n);getchar();//吸收回车linkstrnode* q NULL;for (i 1; i n; i) {char s;scanf(%c,s);//前插linkstrnode* newnode (linkstrnode*)malloc(sizeof(linkstrnode));//产生新的结点newnode-data s;newnode-next q;q newnode;}return q; }//打印字符串 void printstr(linkstrnode* head) {linkstrnode* cur head;while (cur){printf(%c, cur-data);cur cur-next;} }//计算字符串的长度 int length(linkstrnode* head) {int i 0;linkstrnode* cur head;while (cur){i;cur cur-next;}return i; }//创建字符串替换函数 void strreplace(linkstrnode* head, linkstrnode *head1, linkstrnode* head2) {linkstrnode* pre NULL;linkstrnode* cur head;linkstrnode* q;//q结点作为指向cur结点指针的前驱结点指针int i 0;while (cur){if (cur-data head1-data){while (i length(head1) cur){i;cur cur-next;}break;}else {pre cur;cur cur-next; }}//将T2替换原来T1的位置插入到字符串S中//先找到T2的尾结点linkstrnode* tmp head2;while (tmp-next){tmp tmp-next;}pre-next head2;tmp-next cur;}//主函数 int main() {printf(*****创建字符串S*****\n);linkstrnode* headInitstr();//创建指向字符串S头节点的指针printf(字符串S为);printstr(head);printf(\n);printf(*****创建字符串T1*****\n);linkstrnode* head1 Initstr();//创建指向字符串T1头节点的指针printf(字符串T1为:);printstr(head1);printf(\n);printf(*****创建字符串T2*****\n);linkstrnode* head2 Initstr();//创建指向字符串T2头节点的指针printf(字符串T2为);printstr(head2);printf(\n);strreplace(head, head1, head2);printf(被替换后的字符串S:);printstr(head);free(head1);return 0; }
http://www.hkea.cn/news/14396167/

相关文章:

  • 天津市建设行业联合会网站小兔自助建站系统
  • 凡科网站手机投票怎么做个人网站怎么做微信支付
  • l兰州网站建设网站开发公司市场
  • 建设部标准定额司网站口碑好门户网站开发
  • 苏州企业建设网站服务网站建设基本要求
  • 软件下载类型网站怎么做网站怎么seo关键词排名优化推广
  • 网站地图建设设计公司企业官网
  • 站酷海洛设计网站官网免费网站推广网站短视频
  • 申请一个免费的网站空间百度推广优化
  • thinkphp网站开发实例教程宁波公司建设网站
  • 做html网站搜索框代码西安全网优化
  • 济南医院网站建设服务公司企业网站设计哪家好
  • 搜索引擎网站有哪些南京工商注册核名查询系统
  • 哪家专门做特卖网站图行天下免费素材网
  • 品牌网站建设美丽东城免费做网站
  • 怎么自己做网站赚钱吗阿凡达网站建设网
  • 2网站建设公司庄河网站怎么举报做棺材
  • 北京网站建设课程培训响应式网站的登录设置
  • 电子商务网站建设策划书范文搬瓦工wordpress数据库
  • 网站建设文翻译工作手机网站关键词快速排名
  • 上海SEO网站优化推广公司查看楼盘卖房信息在哪查
  • 项城网站建设三分钟做网站
  • gta房产网站建设中金融跟单公司网站建设
  • 做写字楼的网站有哪些大连网站建设选高合科技
  • ftp 迁移 网站网站制作网站建设项目规划书
  • 郑州东区网站建设互联网网站制作
  • 郑州网站seo外包做网站的销售怎么样
  • 怎么分析一个网站seo被窝家装公司
  • 免费效果图网站菜单点开404 wordpress
  • 万维定制平台优就业seo