Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //STACK PROGRAM
- /*
- #include <stdio.h>
- #include <stdbool.h>
- #define SIZE 5
- //stack implemented using array, LIFO
- //stack_init(): Make stack empty
- //empty(): return true if stack is empty, false if otherwise
- //push(val): add val to stack
- //pop(): remove top item
- //top(): return top item, do not remove
- //input positive number will push to stack
- //input negative number will invoke top()
- //input 0 will invoke pop()
- int stack[SIZE],t,input;
- void stack_init(void);
- bool empty(void);
- bool push(int);
- void pop(void);
- int top(void);
- bool isFull(void);
- int main(void) {
- printf("Hello World\n");
- stack_init();
- while(1){
- printf("input:");
- scanf("%d",&input);
- if(input>0){
- if(push(input)){
- //printf("pushed!\n");
- }else{
- printf("array is full!\n");
- }
- }else if(input<0){
- if(top()!=-1) printf("output: %d\n", top());
- else printf("Error - Stack is empty\n");
- }else pop();
- }
- return 0;
- }
- void stack_init(){
- t = -1;
- }
- bool empty(){
- if (t == -1) return true;
- else return false;
- }
- bool push(int val){
- if(isFull()){
- return false;
- }else{
- t=t+1;
- stack[t]=val;
- return true;
- }
- }
- void pop(){
- if(!empty()) t=t-1;
- else printf("Error - Stack is empty\n");
- }
- int top(){
- if(!empty()) return stack[t];
- else return -1;
- }
- bool isFull(){
- if (t==SIZE){
- return true;
- }else{
- return false;
- }
- }
- */
- //QUEUE PROGRAM
- #include <stdio.h>
- #include <stdbool.h>
- #define SIZE 4
- //queue_init():makes queue empty
- //empty:return true if queue is empty
- //enqueue(val):add val into queue
- //dequeue():remove first item FIFO
- //front(): return front item, do not remove
- //input positive invoke enqueue
- //input negative invoke front
- //input 0 invoke dequeue
- int data[SIZE],r,f,input;
- void queue_init(void);
- bool empty(void);
- bool enqueue(int);
- void dequeue(void);
- int front(void);
- int rear(void);
- int main(void) {
- printf("Hello world!\n");
- queue_init();
- while(1){
- printf("input:");
- scanf("%d",&input);
- if(input>0){
- if(enqueue(input)){
- //printf("enqueued!\n");
- }else{
- printf("array is full!");
- }
- }else if(input<0){
- if(front()==-42){
- printf("Error - Queue is empty\n");
- }else{
- printf("f:%d\n",front());
- printf("r:%d\n",rear());
- }
- }else{
- dequeue();
- }
- }
- return 0;
- }
- void queue_init(){
- r = f = -1;
- }
- bool empty(){
- if (r==-1 && f==-1){
- return true;
- }else{
- return false;
- }
- }
- bool enqueue(int val){
- if(((r+1)==f)||((r==SIZE-1)&&(f==0))){
- return false;
- }else{
- if(empty()){
- r=0;
- f=0;
- }else{
- r=r+1;
- if(r==SIZE){
- r=0;
- }
- }
- //printf("f:%d,r:%d",f,r);
- data[r]=val;
- return true;
- }
- }
- void dequeue(){
- if(!empty()){
- if(r==f){
- r=f=-1;
- }else{
- f=f+1;
- if(f==SIZE){
- f=0;
- }
- }
- }else{
- printf("Error - Queue is empty\n");
- }
- }
- int front(){
- if(!empty()){
- return data[f];
- }else{
- return -42;
- }
- }
- int rear(){
- if(!empty()){
- return data[r];
- }else{
- return -43;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement