数据结构C语言—顺序栈案例—十进制转二进制

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include "SeqStack.h"
 4
 5 void conversion(int);
 6 SeqStack seq;
 7 int main()
 8 {
 9     int n;
10     scanf("%d",&n);
11     conversion(n);
12     return 0;
13 }
14
15 void conversion(int N)
16 {
17     int * e = (int*)malloc(sizeof(int));
18     InitStack(&seq);
19     while(N)
20     {
21         PushStack(&seq,N%2);
22         N /= 2;
23     }
24     while(!IsEmpty(&seq))
25     {
26         Pop(&seq,e);
27         printf("%d",*e);
28     }
29     free(e);
30 }

main.c

 1 #ifndef SEQSTACK_H_INCLUDED
 2 #define SEQSTACK_H_INCLUDED
 3 #include <stdio.h>
 4 #include <stdlib.h>
 5 /*****************************
 6 *project    :数据结构第三章案例
 7 *function   :定义顺序栈
 8 *Description:
 9 *Author        :中子
10 *****************************
11 *copyright:2019.3.12 by UZT
12 ****************************/
13 #define MAX_SIZE 100
14 #define OVERFLOW -1
15
16 #define OK 1
17 #define FALSE -1
18
19 typedef int Status;
20 typedef struct{
21     int * base;
22     int * top;
23     int stackSize;
24 }SeqStack;
25
26 Status InitStack(SeqStack * seq);
27
28 Status PushStack(SeqStack * seq,int element);
29
30 Status Pop(SeqStack * seq,int * element);
31
32 int IsEmpty(SeqStack * seq);
33
34 #endif // SEQSTACK_H_INCLUDED

SeqStack.h

 1 #include "SeqStack.h"
 2 Status InitStack(SeqStack * seq)
 3 {
 4     seq->base = (int*)malloc(MAX_SIZE);
 5     if(!seq->base) exit(OVERFLOW);
 6     seq->top = seq->base;
 7     seq->stackSize = MAX_SIZE;
 8     return OK;
 9 }
10
11 Status PushStack(SeqStack * seq,int element)
12 {
13     //if(seq->top - seq->base == seq->stackSize) return FALSE;
14     *seq->top = element;
15     seq->top++;
16     return OK;
17 }
18
19 Status Pop(SeqStack * seq,int * element)
20 {
21     if(seq->top - seq->base == 0) return FALSE;
22     seq->top--;
23     *element = *seq->top;
24     return OK;
25 }
26
27 int IsEmpty(SeqStack * seq)
28 {
29     if(seq->base - seq->top == 0)
30         return 1;
31     else
32         return 0;
33 }

SeqStack.c

原文地址:https://www.cnblogs.com/cnlntr/p/10520368.html

时间: 2024-08-26 01:10:36

数据结构C语言—顺序栈案例—十进制转二进制的相关文章

用顺序栈实现十进制向二进制转化

#include<stdio.h> #include<stdlib.h> #define maxsize 30 typedef int datatype; typedef struct { datatype data[maxsize]; int top; }SeqStack; int main() { SeqStack *S ; S = (SeqStack *)malloc(sizeof(SeqStack)); S->top = -1; int i; printf("

顺序栈-使用顺序栈实现十进制转换二进制

1 #include"stdio.h" 2 #define MaxSize 50 3 typedef int DataType; 4 typedef struct{ 5 DataType elem[MaxSize]; 6 int top; 7 }SeqStack; 8 void initStack(SeqStack &s) 9 { 10 s.top = -1; 11 } 12 int push(SeqStack &s , DataType x) 13 { 14 if(s

数据结构:C_顺序栈的实现

数据结构顺序栈的实现(C语言版) 1.写在前面 栈是一种遵循元素先进(Push)后出(Pop)规则的线性表,它的实现可以用数组或者链表. ..... 2.代码分解 2.1对栈的结构定义: typedef struct { int *base; int *top; int stacksize; }SqStack; |说明: 1.base表示栈底指针,在判断出栈.初始化和重新分配空间的时候需要用到. 2.top表示栈顶指针,是栈最关键和核心的组成,入栈时top向上移动,出栈时top向下移动. 3.此

数据结构基础(6) --顺序栈的设计与实现

栈是一种只允许在一端进行插入或删除操作的线性表.其特点为:先进后出(FILO)/后进先出(LIFO); 栈 VS. 队列 栈和队列都是动态集合, 但在栈中, 可以去掉的是最近插入的那一个,:栈实现了一种后进先出(last-in, first-out)的策略;类似的, 在队列中, 可以去掉的元素总是在集合中存在时间最长的那一个:队列实现了先进先出(first-in, first-out)的策略[下一篇我们着重复习队列]. 栈的示意图: //顺序栈的实现与解析 template <typename

数据结构笔记1顺序栈

#include<stdio.h> #include<conio.h>#include<stdlib.h>#define MAX 100typedef struct{ int data[MAX]; int top;}Stack;Stack s;//初始化 成功1int InitStack(Stack s){ s.top=-1; return 1;}//判空 非空1int StackEmpty(Stack s){ if(-1==s.top)  return 0; retu

数据结构与算法——顺序栈

今天总结栈的顺序存储结构 什么是栈? 栈是一种线性表,其特点是限定尽在表尾进行插入和删除操作,表尾栈一段也叫栈顶,另一端就是栈底了.既然栈是线性表,那么栈也就有两种存储数据的方式,顺序存储和链式存储.今天实现的是顺序存储的栈,也就顺序栈. 图示(来自百度图片): 顺序栈的实现: 栈的顺序存储还是比较简单的,就是对数组进行操作. <span style="font-family:Courier New;font-size:14px;">#include <iostrea

12. C#数据结构与算法 -- 顺序栈

理论基础: 栈(Stack)是操作限定在表的尾端进行的线性表.表尾由于要进行插入.删除等操作,所以,它具有特殊的含义,把表尾称为栈顶(Top),另一端是固定的,叫栈底(Bottom).当栈中没有数据元素时叫空栈(Empty Stack). 栈可以分为顺序栈和链栈. 用一片连续的存储空间来存储栈中的数据元素,这样的栈称为顺序栈(Sequence Stack).类似于顺序表,用一维数组来存放顺序栈中的数据元素.栈顶指示器top设在数组下标为0的端,top随着插入和删除而变化,当栈为空时,top=-1

数据结构c语言版 栈

栈栈是限定仅在表尾进行插入或删除操作的线性表.表头端称栈底.表尾端称栈顶. (1)先进后出(2)top = base 表示栈空(3)非空栈中的栈顶指针始终在栈顶元素的下一个位置上,如上图(4)若base = null 表明栈结构不存在 栈的实现代码 1 #include<stdio.h> 2 #include<stdlib.h> 3 #define STACK_INIT_SIZE 100 4 #define STACKINCREMENT 10 5 typedef int Statu

数据结构复习之顺序栈的实现

#include <stdio.h> #include <stdlib.h> #include <malloc.h> //常量定义 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 //自定义类型 typedef int Status; //函数返回值类型为int typedef int ElemType; //栈元素