ZBLOG

用熟悉的编译器手写栈和冒泡排序

以下是使用C++编写的栈和冒泡排序的示例代码:

#include <iostream>
#include <stack>
using namespace std;

// 栈结构定义
class Stack {
private:
    int arr[100]; // 假设最大容量为100
    int top; // 栈顶指针

public:
    Stack() {
        top = -1; // 初始化栈顶指针为-1,表示空栈
    }

    void push(int data) {
        if (top == 99) {
            cout << "Stack Overflow" << endl;
            return;
        }
        arr[++top] = data; // 将元素压入栈顶并更新指针
    }

    void pop() {
        if (top == -1) {
            cout << "Stack Underflow" << endl;
            return;
        }
        top--; // 弹出栈顶元素,更新指针
    }

    int peek() {
        if (top == -1) {
            cout << "Stack is empty" << endl;
            return -1;
        }
        return arr[top]; // 返回栈顶元素的值
    }

    bool isEmpty() {
        return (top == -1); // 判断栈是否为空
    }
};

// 冒泡排序函数定义
void bubbleSort(int arr[], int n) {
   for(int i = 0; i < n-1; i++) {
       for(int j = 0; j < n-i-1; j++) {
           if(arr[j] > arr[j+1]) { // 如果前一个元素大于后一个元素,交换它们的位置
               int temp = arr[j];
               arr[j] = arr[j+1];
               arr[j+1] = temp;
           }
       }
   }
}

int main() {
    // 栈的使用示例
    Stack s;
    s.push(10);
    s.push(20);
    s.push(30);

    cout << "Stack top element: " << s.peek() << endl;

    s.pop();
    cout << "Stack top element after pop: " << s.peek() << endl;

    if (s.isEmpty()) {
        cout << "Stack is empty" << endl;
    } else {
        cout << "Stack is not empty" << endl;
    }

    // 冒泡排序的使用示例
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr) / sizeof(arr[0]);

    bubbleSort(arr, n);

    cout<<"Sorted array: ";
   for(int i=0; i < n; i++)
      cout<<arr[i]<<" ";

   return 0;
}

请注意,这只是基本的示例代码,你可以根据自己的需求进行扩展和修改。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=1819

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?