用单链表实现栈及操作

包括:栈建立;入栈;出栈;打印栈;

构造节点:

#define SLen (sizeof(struct stu))

typedef struct stu
{
	int a;
	struct stu *next;	
}*Stack;

栈的建立:

/*
	建立栈 
*/
Stack create()
{
	Stack p=(Stack)malloc(SLen);
	if(p==NULL)
	{
			printf("No Enough Space\r\n");
			return NULL;
	}
	else
	{
			p->next=NULL;
	}		
	return p;
}

入栈操作:

/*
	入栈函数 
*/
void push(int x,Stack s)
{
	Stack p=(Stack)malloc(SLen); 
	if(s==NULL)
	{
		printf("Stack Error");
	}
	else
	{
		p->a=x;
		p->next=s->next;
		s->next=p;	 
	} 
}

出栈操作:

/*
	出栈函数 
*/ 
void pop(Stack s)
{
	Stack p=s->next->next;
	free(s->next);
	s->next=p;		
} 

打印栈数据

/*
	打印输出函数 
*/
void printfStack(Stack s)
{
	Stack p=s->next;
	int i=0; 
	while(p!=NULL)
	{
		i++;
		printf("第%d个元素:%d\r\n",i,p->a);
		p=p->next;
	} 
}

 

 

posted on 2017-01-13 19:30  HelloWorldTotti  阅读(447)  评论(0编辑  收藏  举报

导航