注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

程序员小站

J2EE丨Spring | JVM | Scala

 
 
 

日志

 
 

栈-c语言实现  

2011-10-11 19:10:01|  分类: 程序天下 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
#include "stdafx.h"
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"

typedef struct Node{
int data;
struct Node * pNext;
}NODE,*PNODE;

typedef struct Stack{
PNODE pTop;
PNODE pBotton;
}STACK,*PSTACK;

void init(PSTACK);
void push(PSTACK,int);
void traverse(PSTACK);
bool empty(PSTACK ps);
bool pop(PSTACK ps,int *val);
void clear(PSTACK ps);

int main(int argc, char* argv[])
{
STACK s;
int val;

init(&s);
push(&s,1);
push(&s,2);
push(&s,3);
push(&s,4);
traverse(&s);
if(pop(&s,&val)){
printf("pop ture value is : %d\n",val);
}
traverse(&s);
clear(&s);
traverse(&s);
return 0;
}
void init(PSTACK pS){
pS->pTop = (PNODE)malloc(sizeof(NODE));
if(NULL == pS->pTop){
printf("动态内存分配失败!");
exit(-1);
}
pS->pBotton = pS->pTop;
pS->pTop->pNext = NULL;
}
void push(PSTACK ps,int val){
PNODE pNew = (PNODE)malloc(sizeof(NODE));

pNew->data = val;
pNew->pNext = ps->pTop;
ps->pTop = pNew;

return;
}
void traverse(PSTACK ps){
PNODE p = ps->pTop;
while(p != ps->pBotton){
printf("%d ",p->data);
p = p->pNext;
}
printf("\n");
return;
}
bool empty(PSTACK ps){
if(ps->pBotton == ps->pTop){
return true;
}
return false;
}
bool pop(PSTACK ps,int *val){
if(empty(ps)){
printf("出栈失败!");
return false;
}
PNODE p = ps->pTop;
*val = p->data;
ps->pTop = p->pNext;
free(p);
p=NULL;
return true;
}
void clear(PSTACK ps){
while(ps->pTop != ps->pBotton){
PNODE p = ps->pTop;
ps->pTop = p->pNext;
free(p);
p=NULL;
}
return;
}
  评论这张
 
阅读(188)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018