日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构之表(5)栈的顺序实现

發(fā)布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构之表(5)栈的顺序实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

代碼如下:

1: # include <stdio.h> 2: # include <stdlib.h> 3:? 4: # define STACKSIZE 100 /* 棧的大小*/ 5: # define INCREMENTSIZE 10 /*棧的增量*/ 6:? 7: /* 棧存儲結(jié)構的定義 */ 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: }

運行結(jié)果:

1.初始化完成后

2.壓入1,2,3三個數(shù)據(jù)后

3.彈出一個數(shù)據(jù)后

在問題比較簡單時,可直接使用個數(shù)組模擬棧的工作。

下面的代碼使用數(shù)組,實現(xiàn)了十進制向二進制的轉(zhuǎn)換。

1: void DecimalToBinary(int dec) { 2: int temp ; 3: char result[20] ; /*結(jié)果*/ 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轉(zhuǎn)換為二進制為:",dec) ; 17: for( ; i >= 0 ; --i) 18: printf("%c",result[i]) ; 19: }

運行結(jié)果:

轉(zhuǎn)載于:https://www.cnblogs.com/lovelq522/archive/2011/04/26/2029657.html

總結(jié)

以上是生活随笔為你收集整理的数据结构之表(5)栈的顺序实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。