⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 edit.cpp

📁 自己写的数据结构代码
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <malloc.h>


#define OK 1
#define ERROR 0
typedef char SElemType;
typedef int Status;
#define STACK_INIT_SIZE 100000
#define STACKINCREMENT 2

struct SqStack
{
	SElemType *base;
	SElemType *top;
	int stacksize;
};

FILE *fp;

Status InitStack(SqStack &S)
{
	S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
	S.top=S.base;
	S.stacksize=STACK_INIT_SIZE;
	return OK;
}

Status Push(SqStack &S,SElemType e)
{
	if(S.top-S.base>=S.stacksize)
	{
		S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
		
		S.top=S.base+S.stacksize;
		S.stacksize=S.stacksize+STACKINCREMENT;
	}
	*S.top++=e;
	
	return OK;
}

Status Pop(SqStack &S,SElemType &e)
{
	if(S.top==S.base) return ERROR;
	
	e=* --S.top;
	return OK;
}

Status ClearStack(SqStack &S)
{
	S.top=S.base;
	return OK;
}

Status DestroyStack(SqStack &S)
{
	free(S.base);
	S.base=NULL;
	S.top=NULL;
	S.stacksize=0;
	return OK;
}

Status visit(SElemType c) 
{ 
	printf("%c",c); 
	return OK; 
} 

Status StackTraverse(SqStack S,Status(*visit)(SElemType)) 
{ 
	while(S.top>S.base) 
		visit(*S.base++); 
	printf("\n"); 
	return OK; 
} 

void LineEdit()
{
	SqStack s;
	char ch,c;
	int n,i;
	InitStack(s);
	scanf("%d",&n); 
	ch=getchar();
	for(i=1;i<=n;i++)
	{
		ch=getchar();
		while(ch!='\n')
		{
			switch(ch)
			{
			case '#':Pop(s,c);
				break;
			case '@':ClearStack(s);
				break;
			default:Push(s,ch);
			}
			ch=getchar();
		}
		StackTraverse(s,visit);
		ClearStack(s);
	}
	DestroyStack(s);
}

int main()
{
	LineEdit();
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -