Miti059

stack double lab (s)

Oct 20th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.13 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. typedef struct Node {
  5.     int data;
  6.     struct Node *next, *prev;
  7.  
  8. }node;
  9.  
  10. node* head=NULL, *tail;
  11.  
  12. void push(int x)
  13. {
  14.     node* newnode;
  15.     newnode=(node*)malloc(sizeof(node));
  16.     newnode->data=x;
  17.     newnode->next=NULL;
  18.     newnode->prev=NULL;
  19.     if(head==NULL) {
  20.         tail=newnode;
  21.         head=newnode;
  22.     }
  23.     else {
  24.         newnode->next=head;
  25.         head->prev=newnode;
  26.         head=newnode;
  27.     }
  28. }
  29.  
  30. void pop()
  31. {
  32.     if(head == NULL) {
  33.         printf("Stack is Empty !\n");
  34.     }
  35.     else if(head->next == NULL) {
  36.         head = NULL;
  37.     }
  38.     else {
  39.         node *temp = head;
  40.         head = head->next;
  41.         head->prev=NULL;
  42.         free(temp);
  43.     }
  44. }
  45.  
  46.  
  47.  
  48. void print()
  49. {
  50.     node*current=tail;
  51.     while(current!=NULL) {
  52.         printf(" data %d\n", current->data);
  53.         current=current->prev;
  54.     }
  55.     printf("\n");
  56. }
  57.  
  58. int main(){
  59.  
  60. int x,n,i;
  61. printf("Enter input number: ");
  62.      scanf("%d",&n);
  63.      for(i=0;i<n;i++){
  64. printf("Enter stack data");
  65.     scanf("%d",&x);
  66.     push(x);}
  67.     print();
  68.  
  69.  
  70.     pop();
  71.     print();
  72.  
  73.  
  74. }
Advertisement
Add Comment
Please, Sign In to add comment