当先锋百科网

首页 1 2 3 4 5 6 7

Java和C都是常用的编程语言,它们在栈这个数据结构上的应用也很广泛。

java和c的栈

Java中实现栈可以使用Stack类或者Deque接口(如ArrayDeque和LinkedList类)。


//使用Stack类
Stack<String> stack = new Stack<>();
stack.push("a");
stack.push("b");
stack.push("c");
System.out.println(stack.pop());  //输出c
System.out.println(stack.peek());  //输出b

//使用ArrayDeque类
Deque<Integer> deque = new ArrayDeque<>();
deque.push(1);
deque.push(2);
deque.push(3);
System.out.println(deque.pop());  //输出3
System.out.println(deque.peek());  //输出2

C中实现栈可以使用数组或者链表。


//使用数组
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;

void push(int value) {
    if (top >= MAX_SIZE - 1) {
        printf("栈已满");
    } else {
        stack[++top] = value;
    }
}

int pop() {
    if (top < 0) {
        printf("栈已空");
        return -1;
    } else {
        return stack[top--];
    }
}

//使用链表
typedef struct ListNode {
    int val;
    struct ListNode* next;
} ListNode;

typedef struct {
    ListNode* top;
} Stack;

Stack* createStack() {
    Stack* stack = (Stack*)malloc(sizeof(Stack));
    stack->top = NULL;
    return stack;
}

void push(Stack* stack, int value) {
    ListNode* node = (ListNode*)malloc(sizeof(ListNode));
    node->val = value;
    node->next = stack->top;
    stack->top = node;
}

int pop(Stack* stack) {
    if (stack->top == NULL) {
        printf("栈已空");
        return -1;
    }
    int value = stack->top->val;
    ListNode* tmp = stack->top;
    stack->top = stack->top->next;
    free(tmp);
    return value;
}

无论是Java还是C,栈都是常用的数据结构之一。在实际开发中,选择合适的栈实现方式可以大大提高程序的效率。