zoukankan      html  css  js  c++  java
  • Data_Structure03-栈和队列

    一、学习总结


    1、写出你认为本周学习中比较重要的知识点关键词

    ·抽象数据类型
    ·栈和队列
    

    2、思维导图

    二、PTA实验作业


    选题:

    1、7-1 jmu-字符串是否对称(20 分)
    2、7-4(选做) 列车厢调度(25 分)
    3、7-2 银行业务队列简单模拟(25 分)
    

    题目1:7-1 jmu-字符串是否对称

    1、设计思路

    #头文件
    int main(){
    	定义字符串 c;
    	输入字符串;
    	定义字符型栈ch;
    	定义整型变量 len,i,a;
    	len <- c.size();
    	i <- 0;
    	a <- len%2;
    	if  !a 		//偶数个 
    		then while i小于len 
    			do if i小于len/2 //进栈
    				then c[i]进栈
    			elseif c[i]等于栈顶
    				then 栈顶出栈
    			else 
    				then 输出no
    				return 0;
    			i++;
    			end	
    	else	//奇数个 
    		then while i小于len
    			do if i小于len/2  //进栈
    				then c[i]进栈
    			elseif c[i]等于栈顶
    				then 栈顶出栈
    			else 
    				then 输出no
    				return 0;
    			if i等于len/2-1 
    				then i++; 
    			i++;
    			end
    	
    	输出yes
    	return 0;
    } 
    

    2、代码截图


    3、PTA提交列表说明

    编译错误:把编译器改成C++;
    运行超时:一开始我是输入一个字符则进栈一个字符,结果运行超时,后来,修改成一次性输入字符串在进行判断。
    

    题目2:7-4(选做) 列车厢调度

    1、设计思路

    #头文件
    int main(){
    	定义整型变量 i<-0,j<-0;
    	定义字符型数组 a,b,res,res2;
    	定义字符型栈s;//用于储存轨道3的列车
    	输入 a,b;
    	while a[i]
    		do if a[i]==b[j]
    			then res[j++]<-a[i];
    			i++;
    			continue;
    		while s不为空&&s栈顶不等于b[j]
    			do res[j]<-b[j]
    			j++;
    			删除栈顶
    			end
    		if a[i]不等于b[j]
    			then a[i]进栈
    			i++
    		end
    	//将轨道3上的列车全部移向轨道2
    	while 栈s不为空
    		do res[j++]<-栈顶
    		删除栈顶
    		end
    	if res与b不同
    		then 输出“Are you kidding me?"
    		return 0;
    	i<-j<-0;
    	//如果res与b相同,则重复上述操作输出操作序列
    	while a[i]
    		do if a[i]==b[j]
    			then res2[j++]<-a[i];
    			i++;
    			输出 "1->2" 且换行
    			continue;
    		while s不为空&&s栈顶不等于b[j]
    			do res2[j]<-b[j]
    			j++;
    			输出 "3->2" 且换行
    			删除栈顶
    			end
    		if a[i]不等于b[j]
    			输出 "1->3" 且换行
    			then a[i]进栈
    			i++
    		end
    	while 栈s不为空
    		do res2[j++]<-栈顶
    		删除栈顶
    		输出 "3->2" 且换行
    		end
    	return 0;
    }
    

    2、代码截图



    3、PTA提交列表说明

    编译错误:代码中使用了gets()来输入字符串,头文件中的定义中没有,后来改用头文件#include <bits/stdc++.h>  ,该头文件包括了所有的头文件,不用写太多的头文件
    

    题目3:7-2 银行业务队列简单模拟

    1、设计思路

    #头文件
    int main(){
    	定义整型变量 temp,n,i<-0;
    	输入n;
    	定义队列A,B;
    	for i<-0 to n 
    		do 输入temp
    		if temp为奇数
    			then 进A队列
    		else //temp为偶数
    			then 进B队列
    	end
    	//为了输出中间的空格,先输出一个
    	if A队列不为空
    		then 输出A队列头
    		删除A队列头
    		i++
    	else
    		then 输出B队列头
    		删除B队列头
    	while A队列不为空并且B队列不为空
    		do i++;
    		if i%2
    			then if A队列不为空
    				then 输出” ”和A的队列头
    				删除A队列头
    			else
    				if A队列不为空
    					then 输出” ”和A的队列头
    					删除A队列头
    				if B
    					then 输出” ”和B的队列头
    					删除B队列头
    	end
    	输出回车
    	return 0;
    }
    

    2、代码截图


    3、PTA提交列表说明

    编译错误:编译器为改成C++
    部分正确:在输出第一个元素的时候,在B队列那里输出完后没有删除
    

    三、本周题目集的PTA最后排名


    1、栈PTA排名

    2、队列PTA排名

    3、我的总分:2.5

    四、阅读代码

    码云地址



    功能:实现多项式A与多项式B的相除并输出商和余
    优点:逻辑结构清晰,易于阅读;代码简洁;
    

    五、代码Git提交记录截图


  • 相关阅读:
    AGC034F
    loj6074
    杂题
    ICPC2020南京
    CF1326F2
    Codeforces Round #692 Div1
    CF1463F
    SRM582 SemiPerfectPower
    10月30日考试 题解(质数+最小生成树+模拟+DP优化)
    10月28日考试 题解(贪心+二分+树形DP+期望+线段树)
  • 原文地址:https://www.cnblogs.com/lanxiang/p/8734770.html
Copyright © 2011-2022 走看看