您的位置:首页 > 理论基础 > 数据结构算法

数据结构-链栈

2012-10-25 09:33 351 查看
#include<stdio.h>

#include<malloc.h>

#include<error.h>

/*

* 头节点为空

* */

typedef int datatype;

typedef struct _node_

{

datatype data;

struct _node_ *next;

}linknod,*linkstack;

linkstack creat_empty_linkstack()

{

linkstack l;

l=(linkstack)malloc(sizeof(linknod));

l->next=NULL;

return l;

}

int empty_linkstack(linkstack l)

{

return NULL==l->next;

}

int push_linkstack(linkstack h,datatype x)

{

linkstack q;

q=(linkstack)malloc(sizeof(linknod));

q->data=x;

q->next=h->next;

h->next=q;

return 1;

}

datatype pop_linkstack(linkstack h)

{

linkstack q;

datatype temp;

q=h;

q=h->next;

h->next=q->next;

temp=q->data;

free(q);

return temp;

}

datatype get_pop(linkstack h)

{

return h->next->data;

}

int clear_linkstack(linkstack h)

{

linkstack q;

if(empty_linkstack(h))

{

return 0;

}

else

{

q=h->next;

while(q!=NULL)

{

h->next=q->next;

q=h->next;

free(q);//释放指针所指到内存空间

}

q=NULL;

return 1;

}

}

int lenth_linkstack(linkstack h)

{

int len=0;

linkstack q;

if(empty_linkstack(h))

{

return 0;

}

else

{

q=h->next;

while(q!=NULL)

{

len++;

q=q->next;

}

return len;

}

}

int main(int argc,char *argv[])

{

linkstack l;

l=creat_empty_linkstack();

printf("清空:%d\n",clear_linkstack(l));

push_linkstack(l,200);

printf("栈顶指针:%d\n",get_pop(l));

push_linkstack(l,300);

printf("栈顶指针:%d\n",get_pop(l));

printf("lenth:%d\n",lenth_linkstack(l));

printf("清空:%d\n",clear_linkstack(l));

push_linkstack(l,200);

printf("栈顶指针:%d\n",get_pop(l));

printf("入栈数据:%d\n",l->next->data);

printf("判断栈是否为空:%d\n",empty_linkstack(l));

printf("出栈数据:%d\n",pop_linkstack(l));

printf("判断栈是否为空:%d\n",empty_linkstack(l));

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: