2015-11-25 1 views
-1

Эта программа имеет функции push, pop и rotate. Поворота функция должна верхние три элемента в стекеStack push pop rotate

Если числа в стеке:

2 
6 
5 
8 
9 

После вызова функции rotate они должны быть:

5 
2 
6 
8 
9 

Функции push и pop верны, я просто не уверен, как реализовать эту функцию вращения правильно

#include <stdio.h> 
#include <stdlib.h> 
#include "stack.h" 

struct node* push(struct node* top, int i) { 
    struct node *new_node; 
    new_node = malloc(sizeof(struct node)); 
    if(new_node == NULL) { 
    printf("malloc failed"); 
     return top; 
    } 

    new_node->value = i; 
    new_node->next = top; 
    return new_node; 

} 

struct node *make_empty(struct node *top) { 
    return NULL; 
} 

struct node *pop(struct node *top, int *i) { 
    struct node *new_node; 
    new_node = malloc(sizeof(struct node)); 
    if (new_node == NULL) { 
    printf("malloc failed"); 
    return top; 
    } 

    *i = top->value; 
    new_node = top; 
    top = top->next; 
    free(new_node); 
    return top; 
} 

struct node *rotate(struct node *top) { 

    struct node *new_node; 
    struct node *prev = top; 
    struct node *cur = top; 
    int i; 

    new_node = malloc(sizeof(struct node)); 
    if (new_node == NULL) { 
    printf("malloc failed"); 
    return top; 
    } 

    i = cur->value; 
    top = top->next; 

    new_node->next = top->next; 
    new_node->value = cur->value; 

    return new_node; 
} 
void print_stack(struct node *top) { 
    struct node *p; 
    if(top != NULL) { 
     for(p = top; p !=NULL; p=p->next) 
    printf("%d\n", p->value); 
     printf("\n"); 
    } 
    else 
     printf("stack is empty\n"); 
} 
+0

как о POP1, POP2, pop3, push3, push1, push2 – pm100

ответ

1

использовать код, который вы уже

int v1,v2,v3; 
pop(stack, &v1); 
pop(stack, &v2); 
pop(stack, &v3); 
push(stack, v3); 
push(stack, v1); 
push(stack, v2); 

 Смежные вопросы

  • Нет связанных вопросов^_^