数据结构:链栈的一些基本操作(C语言实现)

链栈是采用链表作为存储结构的栈。链栈也遵循先进后出的特性,在出栈后要释放相应的空间。其相较于顺序栈的优点是:只要系统有可用空间,就不会出现溢出的情况。

链栈的一些基础操作代码如下:

#include
#include

typedef struct LinkStackNode                               /*定义链栈的结构*/
{
	int data;
	LinkStackNode *next;
}LinkStackNode,*LinkStack;

void InitLinkStack(LinkStack *top)                         /*初始化链栈函数,构造一个空栈*/
{
	*top=(LinkStackNode *)malloc(sizeof(LinkStackNode));
	(*top)->next=NULL;                                     /*让其栈顶指针指向为空*/
}

void Push(LinkStack top,int x)                             /*进栈函数*/
{
	LinkStackNode *temp;
	temp=(LinkStackNode *)malloc(sizeof(LinkStackNode));
	if(temp==NULL)
	{
		printf("ERROR!CANNOT ENTER STACK!\n");             /*申请空间失败*/
	}
	temp->data=x;
	temp->next=top->next;
	top->next=temp;                                        /*修改栈顶指针*/
	printf("ENTER STACK SUCCESSFULLY!\n");
}

void Pop(LinkStack top)                                    /*出栈函数*/
{
	LinkStackNode *temp;
	temp=top->next;
	if(temp==NULL)
	{
		printf("STACK IS EMPTY!\n");                       /*此栈为空*/
	}
    else
    {
	    top->next=temp->next;
	    printf("%d\n",temp->data);
	    free(temp);                                        /*释放出栈元素的空间*/
	    printf("OUT OF STACK SUCCESSFULLY!\n");
    }
}

int main()
{
	LinkStack top;
	InitLinkStack(&top);
	Push(top,1);
	Push(top,98);
	Pop(top);
	Pop(top);
	return 0; 
}

运行结果:

数据结构:链栈的一些基本操作(C语言实现)_第1张图片

小结:链栈的进栈函数类似与构造链表是应用到头插法,先输入的数据处于链栈的尾端,后输入的数据置于栈顶。通过栈顶指针,即可以实现将后输入的数据出栈。

你可能感兴趣的:(数据结构,数据结构)