View difference between Paste ID: HCG5ahL3 and M29RDr65
SHOW: | | - or go back to the newest paste.
1
/* Doubly linked list - Print (pop) as stack --- Adding tail */ 
2
#include<iostream>
3
#include<cstdio>
4
#include<cstdlib>
5
#include<cstring>
6
using namespace std;
7
8
void push(int x);
9
void pop();
10
void search(int y);
11
12
int nodeCounter = 1;
13
14
typedef struct alvi
15
{
16
    int data;
17
    struct alvi *prev;
18
    struct alvi *next;
19
}node;
20
node *head = NULL;
21
node *tail = NULL;
22
23
int main(void)
24
{
25
    int choice;
26
    while(1)
27
    {
28
        printf("Choose 1 for PUSH , 2 for pop , 3 for search , 4 for quit. \t Select : ");
29
        scanf("%d",&choice);
30
        switch(choice)
31
        {
32
            case 1:
33
                int number;
34
                printf("Enter number to push : ");
35
                scanf("%d",&number);
36
                push(number);
37
                break;
38
            case 2:
39
                pop();
40
                break;
41
            case 3:
42
                int find;
43
                printf("Enter number to search : ");
44
                scanf("%d",&find);
45
                search(find);
46
                break;
47
            case 4:
48
                return 0;
49
                break;
50
            default:
51
                printf("Wrong Selection. Choose correct number \n");
52
                break;
53
        }
54
    }
55
    return 0;
56
}
57
void push(int x)
58
{
59
    node *newNode=new node();
60
    newNode->data=x;
61
    if(head==NULL&&tail==NULL)
62
    {
63
        newNode->prev=NULL;
64
        newNode->next=NULL;
65
66
        head=newNode;
67
        tail=newNode;
68
69
        printf("[INITIAL] Node : %d pushed \n",nodeCounter);
70
        nodeCounter++;
71
    }
72
    else
73
    {
74
        newNode->prev=tail;
75
        newNode->next=NULL;
76
77
        tail=newNode;
78
79
        printf("Node : %d pushed \n",nodeCounter);
80
        nodeCounter++;
81
    }
82
    printf("\n");
83
}
84
void pop()
85
{
86
    node *cursor;
87
    cursor=tail;
88
    while(cursor!=NULL)
89
    {
90
        printf("%d ",cursor->data);
91
        cursor=cursor->prev;
92
    }
93
    printf("\n");
94
}
95
void search(int y)
96
{
97
    int elementCounter=1;
98
    int flag=0;
99
    node *pointer;
100
    pointer=tail;
101
    while(pointer!=NULL)
102
    {
103
        if(pointer->data==y)
104
        {
105
            flag=1;
106
            printf("Found \n");
107
            printf("Element number : %d (Pop Serial) / %d (Push serial) \n",elementCounter,(nodeCounter-elementCounter));
108
            break;
109
        }
110
        pointer=pointer->prev;
111
        elementCounter++;
112
    }
113
    if(flag==0)
114
    {
115
        printf("Not Found \n");
116
    }
117
    printf("\n");
118
}