我是靠谱客的博主 洁净火,最近开发中收集的这篇文章主要介绍算法:C语言实现》习题4.8—— 给定两个序列,判断第二个序列是否可以由第一个序列出栈得到,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

《算法:C语言实现》 习题4.8

这里,为了简化问题,假设序列的每个元素都不一样。

#define N 10
#include <stdio.h>
int judge(char *s, char *d)
{
	char com[N] = {0};
	int end = 0;
	while(1)
	{
		if(*d == '') //成功
			return 0;
		if(*s == NULL && com[end-1] != *d)//入栈序列为空并且栈顶元素不等于待比较元素,则失败,返回-1
			return -1;
		if(*d == *s)
		{
			s = s + 1;
			d = d + 1;
		}
		else if(end > 0 && *d == com[end - 1])
		{
			d = d + 1;
			com[end] = 0;
			end --;
		}
		else if(*d != *s)
		{
			if( end == 0 || (end > 0 && *d != com[end - 1]) )
			{
				com[end] = *s;
				end ++;
				s = s + 1;
			}
		}
	}	
	return 0;
}


int main(int argc, char **argv)
{
	char source[N] = {0}, des[N] = {0};
	int i = 0;
	printf("请输入第一个字符串:n");
	scanf("%s",source);
	while(i ++ < 10)
	{
		printf("请输入待比较字符串:n");
		scanf("%s",des);
		int tag = judge(source,des);
		if(tag == 0)
			printf("Existn");
		else
			printf("Not exitstn");
	}
			
	return 0;
}


最后

以上就是洁净火为你收集整理的算法:C语言实现》习题4.8—— 给定两个序列,判断第二个序列是否可以由第一个序列出栈得到的全部内容,希望文章能够帮你解决算法:C语言实现》习题4.8—— 给定两个序列,判断第二个序列是否可以由第一个序列出栈得到所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部