堆栈数组 C 代码实现和堆栈链表数据结构
堆栈数组
#include#include#include # Define maxn 10000//节点设计 typedef struct stack{ int 数据[maxn]; int top;}stack;//创建stack *init(){ stack *s=(stack *) malloc(的大小(堆栈));if(s==NULL){printf( (堆叠)) “分配内存空间失败”); memset(s->数据,0, sizeof (s->数据));可以查一下百度百科 https://baike.baidu.com/item/memset/4747579?fr=aladdin s->top=0; //栈顶和栈底均为0(表示为空) return s;}//push为空ypush(stack *s, int data){ s->data[s->top] =data;s ->top ++;}//出栈出栈void pop(stack *s){ if(s->top!=0){ s->数据[s->top]=0; //让它返回0,模拟没有初始化 s->top--; print_stack(stack *s){ for(int n=s->top-1;n>=0;n--){ printf( "%d\t",s->数据[n]); } “\n” ; int 输入[5]={11,22,33,44,55}; //模拟5个输入数据 for(int i=0;i计数 = 0; p->顶部 = NULL; 返回 p;}//按下堆栈推送Link_Stack *Push_stack(Link_Stack *p, int elem){ if (p == NULL) 返回NULL; 节点 *temp; temp=(节点*)malloc()sizeof(节点)); //temp = 新节点; temp->data = elem; temp->next = p->top ; p->top = temp; p->count++; p;}//出栈弹出Link_Stack *Pop_stack (Link_Stack *p){ 节点 *temp; temp = p->top; if (p->顶部== NULL){“); 返回p;}其他 { p->上 = p->上->下一个; free(temp); //删除temp; p->count --; 返回 p; }}//跳过堆栈:打印堆栈中所有元素 int show_stack (Link_Stack * p) { 节点 *temp; temp = p->top; if (p->top == N ULL) { printf(""); “错误:堆栈为空”); 返回 0; != NULL) { printf("%d\t", 温度->数据); printf("\n"); 返回 0;}} |
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网