commit cb6320a8f665b559002599d1908c9b70b464d3c0 Author: SCHOOL Date: Thu Sep 3 22:55:03 2026 +0800 用 C 实现å�¯æ‰©å®¹çš„顺åº�栈(数组 + 动æ€�扩容) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9b8a57b --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +# 编译产物 +*.exe +*.o + +# 本地笔记(仓库是 public,ä¸�æ��交) +CLAUDE.md + +# 编辑器/机器相关é…�ç½® +.vscode/ diff --git a/1.c b/1.c new file mode 100644 index 0000000..df4ade7 --- /dev/null +++ b/1.c @@ -0,0 +1,118 @@ +#include +#include +#include +#include + + + +typedef struct +{ + /* data */ + int length;//³õʼĬÈÏÊý×鳤¶È£¬Ëæ×ÅÊý×éÀ©³äͬ²½Ôö¼Ó + int add;//¿Õλ²»¹»µÄʱºòÒ»´ÎÔö¼ÓµÄ¸öÊý + int top;//µ±Ç°Êý×éµÄλÖà + int *start;//ÆðʼλÖõÄÖ¸Õ룬ÀÏʦÉÏ¿ÎдÁËÎÒÒ²²»ÖªµÀΪʲô + +}zhan; + + + +int zadd(zhan *z,int x); +void zinit(zhan *z); +int zreduce(zhan *z,int *a); +void zfree(zhan *z); + +int main (){ +zhan z; +int a; +int num; +zinit(&z); +printf("ÒªÊäÈë¶àÉÙ¸öÊý×ÖÄØ"); +scanf("%d",&num); +for(int i=0;itop==z->length){ + z->start=(int*)realloc(z->start,(z->length+z->add)*sizeof(int)); + z->length=z->length+z->add; + } + z->start[z->top]=x; + z->top++; + + + +return 1; +} + +void zinit(zhan *z){ //´´½¨Õ» Òª´«ÈëɶĨ£¿ºÍ¶¨ÒåzhanµÄ¶«Î÷ºÃÏñÒ»Ñù¡£ +z->add=2; +z->top=0; +z->length=10; //ÏÖÔÚ¶¨ÒåºÃÁË£¬ÒªÉêÇëÄÚ´æ +z->start=(int*)malloc((z->length)*sizeof(int)); + + + +} + +int zreduce(zhan *z,int *a){ //ʵÏÖÄóöÈ¥Êý¾Ý¡£ÕâÀï ÒòΪҪ°ÑÊý¾Ý´ø×Å£¬ÒªÃ´ return £¬ÒªÃ´ÓÃÖ¸Õë +if(z->top==0){ + printf("û¶«Î÷ÁË£¬Òª±¬ÁË"); + return 1 ; +} + + z->top--; +*a=z->start[z->top]; +return 0; + +} + +void zfree(zhan *z){ +free(z->start); + +} + +