内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

使用堆栈反转字符串

2015-10-26 10:42 出处:清屏网 人气: 评论(0

反转字符串的方法其实蛮多的,本文主要介绍使用堆栈来实现,思路其实比较简单,就是把字符串的字符依次压栈,然后最后再依次出栈即可。我们使用这个例子的主要目的就是希望大家能够熟练使用堆栈。

c语言的实现如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
// 使用数组来实现堆栈
struct Stack
{
	int top;
	unsigned capacity;
	char* array;
};
// 创建一个堆栈
struct Stack* createStack(unsigned capacity)
{
	struct Stack* stack = (struct Stack*) malloc(sizeof(struct Stack));
	stack->capacity = capacity;
	stack->top = -1;
	stack->array = (char*) malloc(stack->capacity * sizeof(char));
	return stack;
}
int isFull(struct Stack* stack)
{ return stack->top == stack->capacity - 1; }
int isEmpty(struct Stack* stack)
{ return stack->top == -1; }
// 压栈
void push(struct Stack* stack, char item)
{
	if (isFull(stack))
		return;
	stack->array[++stack->top] = item;
}
// 出栈
char pop(struct Stack* stack)
{
	if (isEmpty(stack))
		return INT_MIN;
	return stack->array[stack->top--];
}
// 反转字符串
void reverse(char str[])
{
	// 创建一个字符串长度的堆栈
	int n = strlen(str);
	struct Stack* stack = createStack(n);
	// 把所有的字符串内容都压栈
	int i;
	for (i = 0; i < n; i++)
		push(stack, str[i]);
	// 再出栈就ok了
	for (i = 0; i < n; i++)
		str[i] = pop(stack);
}
int main()
{
	char str[] = "ReverseTest";
	reverse(str);
	printf("Reversed string is %s", str);
	getchar();
	return 0;
}

若是上文有任何错误或者您有任何想法都可以在下面的评论中提出。


分享给小伙伴们:
本文标签: 堆栈字符串

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号