数据结构——栈之顺序存储
2017-04-12 09:22
344 查看
数据结构——栈之顺序存储
栈的顺序存储可以用数组描述,增加一个变量top存储栈顶元素在数组中的下标,下面是基本操作的实现代码:#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> /**栈的顺序存储**/ #define Max_Size 100 typedef struct Data{ char name[10]; int age; }; typedef struct{ Data data[Max_Size]; int top; //存储栈顶元素在数组中的下标 }Stack; /**初始化空栈**/ void InitStack(Stack *S){ S->top = 0; } /**判断是否为空栈**/ int StackEmpty(Stack S){ //为空返回1否则返回0 if(S.top==0) return 1; else return 0; } /**返回栈顶元素**/ void GetTop(Stack S,Data *d){ if(StackEmpty(S)==1) printf("It's an empty stack!"); else{ Data data = S.data[S.top-1]; strcpy(d->name,data.name); d->age = data.age; } } /**向栈顶插入新元素 入栈**/ void PushStack(Stack *S,Data d){ int top = S->top; if(top<Max_Size){ strcpy(S->data[top].name,d.name); S->data[top].age = d.age; S->top++; }else{ printf("Error!It's a full stack!\n"); } } /**从栈顶删除元素 出栈**/ void PopStack(Stack *S,Data *d){ if(StackEmpty(*S)==1){ printf("It's an empty stack!\n"); }else{ strcpy(d->name,S->data[S->top-1].name); d->age = S->data[S->top-1].age; S->top--; } } /**清空栈**/ void ClearStack(Stack *S){ if(StackEmpty(*S)==1){ printf("It's already an empty stack!\n"); }else{ S->top = 0; } } /**打印栈内信息**/ void PrintStack(Stack S){ if(StackEmpty(S)==1){ printf("It's an empty stack!\n"); }else{ printf("name----age\n"); int len = S.top; for(int i =0;i<len;i++){ printf("%s %d\n",S.data[i].name,S.data[i].age); } } } void main(){ Data d; char name[10]; int age; int i=1; Stack S; while(i){ printf("1、初始化空栈\t2、入栈\t3、出栈\t4、栈顶元素5、清空栈6、打印信息\n"); scanf("%d",&i); switch (i){ case 1: InitStack(&S); break; case 2: printf("Input the name: "); scanf("%s",&d.name); printf("Input the age: "); scanf("%d",&d.age); PushStack(&S,d); break; case 3: PopStack(&S,&d); printf("Deleted (%s,%d)\n",d.name,d.age); break; case 4: GetTop(S,&d); printf("Top element is (%s,%d)\n",d.name,d.age); break; case 5: ClearStack(&S); break; case 6: PrintStack(S); break; default: break; } } system("pause"); }
相关文章推荐
- 数据结构之线性表--顺序存储
- 数据结构之线性表顺序存储
- 【数据结构】顺序存储单链表
- 数据结构之线性结构的顺序存储(数组)
- 数据结构之---c语言实现栈的顺序存储
- 数据在计算机中存储的物理结构有四种:顺序、链表、散列与索引
- c数据结构的顺序存储的实现
- 数据结构——线性表及线性表顺序存储
- 数据结构(严蔚敏)二叉树的顺序存储
- 数据结构之---C语言实现二叉树的顺序存储
- 【数据结构】顺序线性表的构造和存储数据
- 四种数据存储结构---顺序存储 链接存储 索引存储 散列存储
- c/c++常用算法(1) -- 数据结构(线性表的顺序存储)
- 看数据结构写代码(20)稀疏矩阵(顺序存储方式)
- 数据结构之线性表顺序存储的常用操作(转载)
- 数组的顺序存储表示和实现-数据结构
- 数据结构——单向链表的顺序存储及实现
- 数据结构之堆栈的顺序存储
- 数据结构之---C语言实现串的顺序存储
- 看数据结构写代码(22) 二叉树的顺序存储方式