首页 > 编程语言 > 详细

C语言之数据结构——栈(C语言)

时间:2015-12-02 22:28:43      阅读:267      评论:0      收藏:0      [点我收藏+]

C语言之数据结构——栈

栈:

定义:限定只在表尾进行插入或删除操作的线性表,表尾指栈顶,表头指栈底。

特点:栈只能是先进后出。

类别:线性栈和链栈。

/*
数据结构栈:
1、特点:先进后出。
2、基本操作
InitStack(&S)
操作结果:初始化一个栈
Push(&S)
操作结果:进行压栈,输入元素
Pop(&S)
操作结果:删除栈的栈顶元素
定义一个栈:
typedef struct node{
int data;
struct node *next;
}Node,*pNode;
struct Stack{
pNode top;
pNode base;
}link;

*/

 1 #include <stdio.h>
 2 #include <malloc.h>
 3 typedef struct node{
 4 int data;
 5 struct node *next;
 6 }Node,*pNode;
 7 typedef struct Stack{
 8 pNode top;
 9 pNode base;
10 }Link,*pLink;
11 InitStack(pLink S){
12 S->top=(pNode)malloc(sizeof(Node));
13 if(S->top){
14 S->base=S->top;//初始化栈,将栈顶指向栈底
15 S->top->next=NULL;
16 }
17 else
18 {
19 printf("分配失败\n");
20 return 0;
21 }
22 }
23 LinkPush(pLink L,int val){
24 //建立的第二个栈L,在本程序里面,它用来储存栈S按顺序入栈的元素
25 pNode p=(pNode)malloc(sizeof(Node));
26 p->data=val;
27 p->next=L->top;
28 L->top=p;
29 }
30 Push(pLink S){
31 //栈S进行入栈,
32 pNode p;
33 int i,n=0;
34 printf("请你要输入的元素的个数:\n");
35 scanf("%d",&n);
36 printf("请输入栈的元素:\n");
37 for(i=0;i<n;i++){
38 p=(pNode)malloc(sizeof(Node));
39 //定义一个新的节点用来输入栈的元素;
40 scanf("%d",&p->data);
41 p->next=S->top;
42 S->top=p;
43 
44 }
45 }
46 Pop(pLink S){
47 pNode p=S->top;
48 printf("\n依次删除的栈顶元素:\n");
49 //删除栈顶元素
50 while(p!=S->base){
51 printf("%d ",p->data);
52 S->top=S->top->next;
53 //依次向前移位
54 p=S->top;
55 }
56 
57 }
58 DataLink(pLink S,pLink L){
59 pNode p=S->top;
60 while(p!=S->base){
61 //栈L存储栈S入栈的元素,也可以说将栈S中的元素逆置并存入栈L里面
62 LinkPush(L,p->data);
63 p=p->next;
64 }
65 }
66 LinkTraverse(pLink L){
67 pNode p=L->top;
68 printf("\n入栈的元素:\n");
69 //将栈L中的元素遍历
70 while(p!=L->base){
71 printf("%d ",p->data);
72 p=p->next;
73 }
74 }
75 traverse(pLink S){
76 pNode p=S->top;
77 printf("\n出栈后的元素:\n");
78 while(p!=S->base){
79 printf("%d ",p->data);
80 p=p->next;
81 }
82 }
83 main(){
84 Link S;
85 Link L;
86 InitStack(&S);
87 InitStack(&L);
88 Push(&S);
89 DataLink(&S,&L);
90 LinkTraverse(&L);
91 traverse(&S);
92 Pop(&S);
93 traverse(&S);
94 }
95 
96  
97 
98  

 

C语言之数据结构——栈(C语言)

原文:http://www.cnblogs.com/KingHwt/p/5014129.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!