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

📄 stackstack.c

📁 数据结构学习点滴
💻 C
字号:
/***行编辑程序***Created by YYF at 20041220****/

#include "myhdr.h"

typedef struct node{
	int data;
	struct node *next;
}stacknode;

typedef struct{
	stacknode *top;
}stacklist;

void LineEdit();
stacklist* print(stacklist stack);
stacklist *pop(stacklist stack,char top_value);
stacklist *push(stacklist stack,char ch);
stacklist* clearstack(stacklist stack);
stacklist *initstack();

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

void
LineEdit()
{
	stacklist stack;
	char ch;
	char top_value;
	stack=*(initstack());
	ch=getchar();
	while(ch!='.')
	{
		while((ch != '.') && (ch != '\n'))
		{
			switch(ch)
			{
				case '$' :stack=*(pop(stack,top_value));break;
				case '@' : stack=*(clearstack(stack));break;
				default  : stack=*(push(stack,ch));break;
			}
			ch=getchar();
		}
		if(stack.top == NULL)
		{
			printf("in editline the stack is empty\n");
		}
		stack=*(print(stack));
		stack=*(clearstack(stack));
		if( ch != '.' )
		{
			ch = getchar();
		}
	}
	stack=*(clearstack(stack));
}
	
stacklist
*initstack()
{

	stacklist stack;
	printf("Into initstackyyf\n");
	stack.top=NULL;
	printf("stack->top=NULL\n");
	return &stack;
}

stacklist*
pop(stacklist stack,char top_value)
{
	stacknode *node_p;
	node_p=stack.top;
	top_value=node_p->data;
	stack.top=node_p->next;
	free(node_p);
	return &stack;
}

stacklist*
push(stacklist stack,char ch)
{
	stacknode *node_p;
	node_p=(stacknode *)malloc(sizeof(stacknode));
	if( node_p == NULL )
	{
		printf("Allocated memmory Error\n");
		exit(1);
	}
	node_p->data=ch;
	node_p->next=stack.top;
	stack.top=node_p;
	return &stack;
}

stacklist *
clearstack(stacklist stack)
{
	stacknode *node_p;
	while(stack.top != NULL)
	{
		node_p = stack.top;
		stack.top = node_p->next;
		free(node_p);
	}
	stack.top=NULL;
	return &stack;
	
}

stacklist *
print(stacklist stack)
{
	char row[1024];
	int i=0,j=0;
	stacknode *node_p;
	memset(row,0,sizeof(row));
	printf("begin to print\n");
	if(stack.top == NULL)
	{
		printf("the stack is empty\n");
	}
	while(stack.top != NULL)
	{
		node_p = stack.top;
		row[i]=node_p->data;
		stack.top= node_p->next;
		i++;
	}
	
	for(j=0;j<=i;j++)
	{
		printf("%c",row[i-j]);
	}
	printf("\n");
	return &stack;
}

⌨️ 快捷键说明

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