Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2797404
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: C/C++

2012-07-05 09:24:19

栈是一种受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。允许进行插入和删除运算的一端称为栈顶(top),位于栈顶的元素称为栈顶元素。不允许进行插入和删除运算的另一端称为栈底(bottom)

从栈中删除一个元素称为出栈或退栈由于栈的插入和删除运算仅在栈顶一端进行,后进栈的元素必定先出栈,所以又把栈,称为后进先出表(Last In First Out,简称LIFO)





点击(此处)折叠或打开

  1. 链栈的五种栈运算

  2. (一)栈初始化
  3. void inistack(node *top)
  4. { top=NULL;}

  5. (二)进栈运算
  6. 1)进栈算法
  7. (1)为待进栈元素x申请一个新结点,并把x赋给该结点的值域。
  8. (2)使x结点的指针域指向栈顶结点。
  9. (3)栈顶指针指向x结点,即使x结点成为新的栈顶结点。
  10. 2) 实现程序
  11. Node *top=null;
  12. Void push(char x)
  13. {Node *p; p=(Node*)malloc(sizeof(Node));
  14. p->data=x;p->link=top;top=p;
  15. }

  16. (三)出栈运算
  17. 1)出栈算法
  18. (1)检查栈是否为空,若为空,进行错误处理。
  19. (2)取栈顶指针的值,并将栈顶指针暂存。
  20. (3)删除栈顶结点。
  21. 2)实现程序
  22. int pop(char *p_x)
  23. {Node *p;
  24. if(top==NULL) return(1);
  25. *p_x=top->data; p=top;
  26. top=top->link; free(p);
  27. return(0);
  28. }

  29. (四)取栈顶元素
  30. Char gettop(node *top)
  31. {
  32. if(top!=NULL)
  33. return(top->data);
  34. else
  35. return(NULL);
  36. }

  37. (五)判栈空
  38. int empty(node *top)
  39. {
  40. if(top==NULL)
  41. return( 0);
  42. else
  43. return(1);
  44. }

阅读(717) | 评论(0) | 转发(0) |
0

上一篇:帖子回复表设计

下一篇:ajax原理图

给主人留下些什么吧!~~