65.c

来自「这是一个经过本人一个月的时间自己做的关于c的小程序」· C语言 代码 · 共 120 行

C
120
字号
/*例:利用队列特点设计一个简单的文字编辑器,使具有删除打错字符的功能
约定:‘#’表示删除前面一个字符,	
‘@’表示删除前面所有字符	
‘*’表示输入结束
*/
#include<stdio.h>
//typedef char datatype;
//#define N 10;
typedef struct node
{
	char data[10];
	int top;
}seqstrack;

void seqstrack_fun()
{
	seqstrack *t;//若此处定义的不是指针形式,就可以不用对t进行空间开辟
	char ch;
	t=(seqstrack *)malloc(sizeof(seqstrack)); //必须对指针t进行空间开辟,其里面存放队列的值
	t->top=-1;
	
	printf("enter the string:\n");
	ch=getchar();
	while(ch!='0')
	{	
		if(ch=='#')
		{
			--t->top;
		}
		else if(ch=='@')
		{
			t->top=-1;
		}
		else if(ch=='*')
		{
			while(t->top!=-1)
			{
				putchar(t->data[t->top]);
				--t->top;
			}
		}
		else
		{
			t->data[++t->top]=ch;
		
		}
		ch=getchar();
		 
	}
	printf("\n");
}

/*
#include<stdio.h>
#define  maxsize  100
typedef char datatype; 
typedef struct 
{
 datatype data[maxsize];
 int top;
}seqstack;
setnull(seqstack  *s);
seqstack *push(seqstack  *s,datatype x);
datatype pop(seqstack *s);
int empty(seqstack  *s);
main()
{
 seqstack  S;
 char ch;
 setnull(&S);
 while((ch=getchar())!='*')
 { 
	 switch(ch)
	 {
	 case '#':  pop(&S);break;
	 case '@':  setnull(&S);break;
	 default:   push(&S,ch);
	 }
 }
 if(empty(&S))
	 printf("栈是空的!");
 else
     printf("栈顶元素是%c",S.data[S.top]);

}
setnull(seqstack *s)
{s->top=-1;}  

seqstack *push(seqstack  *s,datatype x)
{
 if(s->top==maxsize-1)
 {
  printf("overflow");
  return NULL;
 }
 else 
 {
  s->top++;
  s->data[s->top]=x;
 }
 return s;
}
int empty(seqstack  *s)
{
	if(s->top>=0)
       return 0;
    else
       return 1;
} 
datatype pop(seqstack *s)
{
	if(empty(s))
	{ printf("underflow");return NULL;}
    else 
    {s->top--;
	 return(s->data[s->top+1]);
    }
}

*/

⌨️ 快捷键说明

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