Question: You are given a stack and you have to reverse it, using only stack operations push and pop.

    The algorithm for the above problem can be given in this way:-

    • First POP all elements of the stack till it becomes empty
    • Now for each upward step in the recursion, push the elements at the bottom of the stack.
    void reverseStack(struct stackNode * top)
    {
    	int data;
    
    	if(isStackEmpty(top))
    		return;
    
    	//get the top data
    	data = POP(top);
    
    	//recursive call for the next top element
    	reverseStack(top);
    
    	//after the recursion ends, we need to insert the numbers at the Bottom
    	insertAtBottom(top, data);
    }
    
    void insertAtBottom(struct stackNode * top, int data)
    {
    	int temp;
    
    	//check for terminating condition of recursive call
    	if(isStackEmpty(top))
    	{
    		//when the stack is empty, just add the data
    		//this will be the last data of original stack
    		top = push(top,data);
    		return;
    	}
    
    	//again we get the top elements one by one
    	temp = POP(top);
    
    	//a recursive call
    	insertAtBottom(top, data);
    
    	top = push(top, temp);
    }
    
    0 comments
    0 FacebookTwitterLinkedinWhatsappEmail
  • Question: Given an array of characters formed by a’s and b’s. The string is marked with special character ‘X’ which represents the middle of the list (for example ababa…ababXbabab…baaa). Check whether the string is palindrome or not? Input: ababXbaba Output: PALINDROME Input: ababababababbbbbXbbbbabababababa Output: PALINDROME Input: abababbbabbXabbbabbabbb Output: NOT PALINDROME This is one of the simplest algorithms. What we do is, start two indexes – one at the beginning of the string and other at the ending of the string. Each time compare whether the values at both the indexes …

    0 FacebookTwitterLinkedinWhatsappEmail
  • Suppose we want to find the minimum element available in a stack at any point of time. The most trivial and common method would be to traverse the entire stack and keep a record of the least element encountered. At the end, we can return this element. This method no doubt is easy, but it consists of traversing the entire stack again and again, which can lead to time complexities. Thus, we need to optimize it, and it can be done with a very neat little trick:- ALGORITHM:- Take an …

    0 FacebookTwitterLinkedinWhatsappEmail
  • Theory

    Discuss Postfix Evaluation using stacks

    by nikoo28
    3 minutes read

    Post-fix expressions have a very special place in computer science. Most of the computations are performed using stacks. In-fact a very simple calculator works on the principle of post-fix evaluation to get the answer. A post-fix notation is also known as the reverse Polish notation. The steps involved in evaluating a post-fix expression can be defined as follows. We use the concept of stacks to evaluate the same. ALGORITHM: Scan the post-fix string from left to right. Initialize an empty stack. Repeat the below steps 4 and 5 till all …

    0 FacebookTwitterLinkedinWhatsappEmail
  • In infix expressions, the operator precedence is implicit unless we use parentheses. Therefore, for the infix to postfix conversion algorithm, we have to define the operator precedence inside the algorithm. We did this in the post covering infix, postfix and prefix expressions. What are infix, prefix and postfix expressions? Important properties:- Let us consider the infix expression 2 + 3 * 4 and its postfix will be 2 3 4 * +. Notice that between infix and postfix the order of the numbers(or operands) is unchanged. It is 2 3 …

    0 FacebookTwitterLinkedinWhatsappEmail
  • Theory

    What are infix, postfix and prefix expressions?

    by nikoo28
    2 minutes read

    Stacks can be used to implement algorithms involving Infix, postfix and prefix expressions. So let us learn about them:- INFIX:- An infix expression is a single letter, or an operator, proceeded by one infix string and followed by another infix string. A A + B (A + B) + (C – D) PREFIX:- A prefix expression is a single letter, or an operator, followed by two prefix strings. Every prefix string longer than a single variable contains an operator, first operand and second operand A + A B + + …

    0 FacebookTwitterLinkedinWhatsappEmail
  • Stacks can be used to check if the given expression has balanced symbols or not. The algorithm is very much useful in compilers. Each time parser reads one character at a time. If the character is an opening delimiter like ‘(‘ , ‘{‘ or ‘[‘ then it is PUSHED in to the stack. When a closing delimiter is encountered like ‘)’ , ‘}’ or ‘]’ is encountered, the stack is popped. The opening and closing delimiter are then compared. If they match, the parsing of the string continues. If they …

    0 FacebookTwitterLinkedinWhatsappEmail

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More