链式栈简单实现序列反转

来源:互联网 发布:百度ico制作软件 编辑:程序博客网 时间:2024/05/23 11:47

stack.h

#ifndef STACK_H#define STACK_H 1typedef int INT32;typedef unsigned int UINT32;typedef unsigned char UCHAR8;typedef char CHAR8;typedef long long int LONG64;typedef unsigned long long int ULONG64;typedef double DOUBLE64;typedef float FLOAT32;typedef struct Stack{CHAR8 data;struct Stack *next;}Stack;typedef struct LinkStack    //指向栈顶结点{Stack *top;}*Pstack;Pstack Create();void Pop(Pstack s);void Push(Pstack s,CHAR8 data);CHAR8 Top(Pstack s);INT32 Empty(Pstack s);INT32 Full(Pstack s);#endif



stack.c


#include<stdio.h>#include<stdlib.h>#include"stack.h"Pstack Create(){Pstack head = (Pstack)malloc(sizeof(struct LinkStack));if(head != NULL)head->top = NULL;else{printf("out of place\n");return NULL;}return head;}INT32 Empty(Pstack s){if(s->top == NULL)return 1;elsereturn 0;}void Pop(Pstack s){struct Stack  *temp;if(Empty(s) == 0){temp = s->top;s->top = s->top->next;free(temp);}else{printf("栈为空\n");return ;}}CHAR8 Top(Pstack s){if(Empty(s) == 0)return s->top->data;elseexit(0);}void Push(Pstack s,CHAR8 data){Stack *p = (Stack *)malloc(sizeof(Stack));p->next = s->top;p->data = data;s->top = p;}



main.c


#include<stdio.h>#include<stdlib.h>#include"stack.h"int main(){CHAR8 ch;Pstack s = Create();printf("输入需要反转序列:\n");while(scanf("%c",&ch) != EOF){Push(s,ch);}while(Empty(s) != 1){printf("%c ",Top(s));Pop(s);}printf("\n");return 0;}




原创粉丝点击