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

如何制作导航网站洛阳霞光只做有效果的网站

如何制作导航网站,洛阳霞光只做有效果的网站,网站导航栏怎么设置,鹿寨县住房和城乡建设局网站思想:这道题是栈的应用类型,我们可以建立一个栈来保存(,[,{,通过遍历字符串如果是三个左括号其中一个则入栈,当遇到)]}则出栈配对,如果左右匹配,则遍历下一个元素,如果不匹配直接返回,如果遍历字符串结束&a…

思想:这道题是栈的应用类型,我们可以建立一个栈来保存'(','[','{',通过遍历字符串如果是三个左括号其中一个则入栈,当遇到')'']''}'则出栈配对,如果左右匹配,则遍历下一个元素,如果不匹配直接返回,如果遍历字符串结束,但栈中还有元素,则是左符号单身,如果已经空栈,但是又遍历到一个右括号,则是右括号单身

具体代码:

#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>
typedef struct LinkStack
{
char data;
struct LinkStack* next;
}LinkStack;
void InitStack(LinkStack** S)//初始化栈(不带头结点链表实现)
{
(*S) = NULL;
return;
}
bool Push(LinkStack** S,char ch)//入栈
{
if (ch == '(' || ch == '[' || ch == '{')
{
LinkStack* p = (LinkStack*)malloc(sizeof(LinkStack));
if (p == NULL)
return false;
//第一次入栈
if ((*S) == NULL)
{
p->data = ch;
p->next = NULL;
(*S) = p;
}
//后续入栈
else
{
p->data = ch;
p->next = (*S);
(*S) = p;
}
}
return true;

}
bool Pop(LinkStack** S)//出栈并且带回元素
{
if ((*S) == NULL)//空栈无法出栈
return false;
LinkStack* p = (*S);
//*x = p->data;
(*S) = p->next;
free(p);
return true;
}
LinkStack* GetTop(LinkStack* S)//返回栈顶指针
{
if (S == NULL)//空栈
return NULL;
LinkStack* p = S;
return p;
}
bool EmptyStack(LinkStack* S)//判断空栈
{
if (S == NULL)
return true;
return false;
}
void JudgeStack(LinkStack **S,char arr[])//判断
{
char* a = arr;
while (*a != '\0')
{
if (*a == '(' || *a == '[' || *a == '{')//如果当时是三个括号其中一个则入栈
Push(S, *a);
else if (EmptyStack(*S) == false && *a == ')' && GetTop((*S))->data == '(')//如果是'('则出栈
Pop(S);
else if (EmptyStack(*S) == false && *a == ')' && GetTop((*S))->data != '(')//如果不是则直接退出
{
printf("配对失败\n");
printf("%c %c\n",*a, GetTop((*S))->data);
return;
}
else if (EmptyStack(*S) == false && *a == ']' && GetTop((*S))->data == '[')//如果是'['则出栈
Pop(S);
else if (EmptyStack(*S) == false && *a == ']' && GetTop((*S))->data != '[')
{
printf("配对失败\n");
printf("%c %c\n", *a, GetTop((*S))->data);
return;
}
else if (EmptyStack(*S) == false && *a == '}' && GetTop((*S))->data == '{')//如果是'{'则出栈
Pop(S);
else if (EmptyStack(*S) == false && *a == '}' && GetTop((*S))->data != '{')
{
printf("配对失败\n");
printf("%c %c\n", *a, GetTop((*S))->data);
return;
}
else if (EmptyStack(*S) == true && (*a == ')' || *a == ']' || *a == '}'))//如果栈为空,且字符串中还有元素
printf("右括号单身\n");
a++;//向后遍历字符串

    }
if (EmptyStack(*S) == false)//如果字符串已遍历结束但栈里还有元素
printf("左括号单身\n");
else
printf("配对成功\n");
return;
}
int main()
{
char arr[] = "[(3 + 2) * 5 + 3](]()";
LinkStack* S;//指向栈的指针
InitStack(&S);//初始化栈
JudgeStack(&S , arr);
return 0;
}

注:此代码中运用了大量的if-else语句,不是很美观(其实懒得改了),大家如果要引用可以自行优化代码

http://www.dtcms.com/a/535644.html

相关文章:

  • 做网站什么叫电商
  • 网站建设中是因为没有ftp上传吗个人注什么域名的网站
  • 给公司建网站 深圳怎样在网站上做专栏
  • 摄影网站建设策划完整方案建设网站的详细步骤
  • 美容评测网站建设分析报告杭州有哪些性价比高的网站建设服务商
  • 手机金融界网站中国十大奇迹工程
  • 衡水精品网站建设报价免费网站域名申请
  • 将自己做的网站入到阿里云域名上洛阳洛龙区网络营销公司
  • 那种网站后台最好中国龙岩网
  • 网站源码 照明湖北专业的网瘾戒除学校如何教育
  • 有了域名公司网站怎么建设seo效果检测步骤
  • 组服务器做网站做外贸 英文网站
  • 网站备案负责人照片深圳集团网站开发
  • 微信 app 微网站 整合大型视频网站建设方案
  • 开发区网站开发语言拟采用建站技术
  • 没有网站可以域名备案吗WordPress点击logo返回首页
  • 如何做网站关键词做视频有赚钱的网站
  • 黑龙江国际旅行社电话乐陵310seo
  • 滁州市南谯区建设局网站室内设计网站免费素材
  • 江苏建设厅网站如何找人帮我做网站推广
  • 做可视化图表的网站网站设计公司网
  • 广告建设网站建设建网站平台 优帮云
  • 网站建设方案 docgrace 7 wordpress
  • 网站开发公司运营流程wordpress主题安装ftp
  • 滨江区网站开发公司合阳县建设局网站
  • php 建网站在线做公章网站
  • 买机票便宜的网站建设2017最新网站icp备案
  • 重庆怎样网站推广一般做网站需要的js有哪些
  • 福田做网站价格加拿大pc网站搭建
  • 平面设计常用网站win7系统优化软件