数据结构之表(5)栈的顺序实现
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                数据结构之表(5)栈的顺序实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                代碼如下:
1: # include <stdio.h> 2: # include <stdlib.h> 3:? 4: # define STACKSIZE 100 /* 棧的大小*/ 5: # define INCREMENTSIZE 10 /*棧的增量*/ 6:? 7: /* 棧存儲結構的定義 */ 8: struct ds_stack_tag { 9: int *base ; /*棧的起始地址*/ 10: int top ; /*指向棧頂*/ 11: int size ;/*棧大小*/ 12: }; 13:? 14: /*初始化為棧分配存儲空間*/ 15: void ds_init(struct ds_stack_tag * s) { 16: s->base = (int *)malloc(STACKSIZE * sizeof(int)) ; 17: if (!s->base) 18: { 19: exit(0) ; 20: } 21: s->top = 0 ; 22: s->size = STACKSIZE ; 23: } 24:? 25: /*判空,為空則返回0,否則返回1*/ 26: int ds_isEmpty(struct ds_stack_tag *s) { 27: if(!s->top) 28: return 1 ; 29: else 30: return 0 ; 31: } 32:? 33: /*入棧*/ 34: void ds_push(struct ds_stack_tag * s,int elem) { 35: if((++ s->top) >= s->size) {/*空間不足,分配空間*/ 36: int * add = (int *)realloc(s->base,(STACKSIZE + INCREMENTSIZE) * sizeof(int)) ; 37: if(!add) 38: exit(0) ; 39: s->base = add ; 40: s->size += s->size + INCREMENTSIZE ; 41: *(s->base + s->top) = elem ; 42: ++ s->top ; 43: } 44: else { 45: -- s->top ; 46: *(s->base + s->top) = elem ; 47: ++ s->top ; 48: } 49: } 50:? 51: /*出棧*/ 52: int ds_pop(struct ds_stack_tag * s) { 53: if(!ds_isEmpty(s)) { 54: return *(s->base + (-- s->top)) ; 55: } 56: else 57: return 0 ; 58: } 59:? 60: /*釋放分配的空間*/ 61: void ds_destroy(struct ds_stack_tag *s) { 62: free(s->base) ; 63: }運行結果:
1.初始化完成后
2.壓入1,2,3三個數據后
3.彈出一個數據后
在問題比較簡單時,可直接使用個數組模擬棧的工作。
下面的代碼使用數組,實現了十進制向二進制的轉換。
1: void DecimalToBinary(int dec) { 2: int temp ; 3: char result[20] ; /*結果*/ 4: int i ; 5: 6: temp = dec ; 7: for(i = 0 ; temp != 0 ; i ++) { 8: if(temp%2) 9: result[i] = '1' ; 10: else 11: result[i] = '0' ; 12: temp /= 2 ; 13: } 14: 15: --i ; 16: printf("%d轉換為二進制為:",dec) ; 17: for( ; i >= 0 ; --i) 18: printf("%c",result[i]) ; 19: }運行結果:
轉載于:https://www.cnblogs.com/lovelq522/archive/2011/04/26/2029657.html
總結
以上是生活随笔為你收集整理的数据结构之表(5)栈的顺序实现的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 高速PCB设计知识问答
- 下一篇: 【C/C++ string】之strcp
