当前位置: 首页 > news >正文

自动做设计的网站关键词的作用

自动做设计的网站,关键词的作用,网站的总体方案,南昌建站软件文章目录 链式存储结构顺序存储结构 下面这篇文章是我大二时候写的比较详细的实现过程,再这篇文章我也会再一次比较简单的再次简述一下链式与顺序存储结构的实现方式。 链式存储结构与顺序存储结构详解 这里我就不使用C再一次实现这两个栈了,有兴趣的也可…

文章目录

  • 链式存储结构
  • 顺序存储结构

下面这篇文章是我大二时候写的比较详细的实现过程,再这篇文章我也会再一次比较简单的再次简述一下链式与顺序存储结构的实现方式。
链式存储结构与顺序存储结构详解
这里我就不使用C++再一次实现这两个栈了,有兴趣的也可以使用C++的STL库中的stack直接实现。

实现思路如下:

首先,我们定义了一个节点结构Node,每个节点包含一个整数数据和指向下一个节点的指针。
然后,我们定义了栈结构Stack,其中包括一个指向栈顶节点的指针top和一个表示栈大小的整数size。
初始化栈时,将top指针设置为NULL,表示栈为空,同时将size设置为0。
入栈操作(push)创建一个新节点,将数据存储在新节点中,然后将新节点插入到栈顶,并更新top和size。
出栈操作(pop)从栈顶移除一个节点,返回其数据,并释放节点内存,同时更新top和size。
查看栈顶元素操作(peek)返回栈顶节点的数据,不修改栈的状态。
打印栈中元素操作(printStack)遍历栈中的节点,打印每个节点的数据。
主函数中使用一个循环来接收用户输入的选项,然后调用相应的栈操作,以实现增删改查功能。

链式存储结构

#include <stdio.h>
#include <stdlib.h>// 定义节点结构
typedef struct Node {int data;struct Node *next;
} Node;// 定义栈结构
typedef struct Stack {Node *top;int size;
} Stack;// 初始化栈
void initStack(Stack *stack) {stack->top = NULL;stack->size = 0;
}// 入栈操作
void push(Stack *stack, int data) {Node *newNode = (Node *)malloc(sizeof(Node));if (newNode == NULL) {printf("内存分配失败\n");exit(1);}newNode->data = data;newNode->next = stack->top;stack->top = newNode;stack->size++;
}// 出栈操作
int pop(Stack *stack) {if (stack->top == NULL) {printf("栈为空\n");return -1; // 返回一个特殊值表示栈为空}Node *temp = stack->top;int data = temp->data;stack->top = temp->next;free(temp);stack->size--;return data;
}// 查看栈顶元素
int peek(Stack *stack) {if (stack->top == NULL) {printf("栈为空\n");return -1; // 返回一个特殊值表示栈为空}return stack->top->data;
}// 打印栈中的元素
void printStack(Stack *stack) {Node *current = stack->top;printf("栈中的元素: ");while (current != NULL) {printf("%d ", current->data);current = current->next;}printf("\n");
}int main() {Stack stack;initStack(&stack);int choice, data;while (1) {printf("1. 入栈  2. 出栈  3. 查看栈顶元素  4. 打印栈  5. 退出\n");printf("请输入选项: ");scanf("%d", &choice);switch (choice) {case 1:printf("请输入要入栈的数据: ");scanf("%d", &data);push(&stack, data);break;case 2:data = pop(&stack);if (data != -1)printf("出栈的元素是: %d\n", data);break;case 3:data = peek(&stack);if (data != -1)printf("栈顶元素是: %d\n", data);break;case 4:printStack(&stack);break;case 5:exit(0);default:printf("无效选项\n");}}return 0;
}

顺序存储结构

实现思路如下:

首先,我们定义了一个栈结构Stack,其中包括一个指向整数数组的指针array,栈的容量capacity,栈顶索引top,和当前栈中的元素个数size。
初始化栈时,分配内存并初始化Stack结构的字段,包括分配内存给array数组,将top初始化为-1表示栈为空,将size初始化为0。
入栈操作(push)检查栈是否已满,如果没有满,将数据存储在数组中,并更新top和size。
出栈操作(pop)检查栈是否为空,如果不为空,从数组中取出元素,更新top和size,并返回出栈的元素。
查看栈顶元素操作(peek)检查栈是否为空,如果不为空,返回栈顶元素。
打印栈中元素操作(printStack)遍历数组中的元素,打印每个元素。
主函数中使用一个循环来接收用户输入的选项,然后调用相应的栈操作,以实现增删改查功能。

#include <stdio.h>
#include <stdlib.h>// 定义栈结构
typedef struct Stack {int *array;  // 用于存储栈元素的数组int capacity; // 栈的容量int top;      // 栈顶索引int size;     // 当前栈中的元素个数
} Stack;// 初始化栈
Stack* initStack(int capacity) {Stack *stack = (Stack *)malloc(sizeof(Stack));if (stack == NULL) {printf("内存分配失败\n");exit(1);}stack->capacity = capacity;stack->array = (int *)malloc(sizeof(int) * capacity);if (stack->array == NULL) {printf("内存分配失败\n");exit(1);}stack->top = -1; // 初始化栈顶索引为-1,表示栈为空stack->size = 0; // 初始化栈中元素个数为0return stack;
}// 入栈操作
void push(Stack *stack, int data) {if (stack->size >= stack->capacity) {printf("栈已满\n");return;}stack->array[++stack->top] = data;stack->size++;
}// 出栈操作
int pop(Stack *stack) {if (stack->size <= 0) {printf("栈为空\n");return -1; // 返回一个特殊值表示栈为空}int data = stack->array[stack->top--];stack->size--;return data;
}// 查看栈顶元素
int peek(Stack *stack) {if (stack->size <= 0) {printf("栈为空\n");return -1; // 返回一个特殊值表示栈为空}return stack->array[stack->top];
}// 打印栈中的元素
void printStack(Stack *stack) {if (stack->size == 0) {printf("栈为空\n");return;}printf("栈中的元素: ");for (int i = 0; i <= stack->top; i++) {printf("%d ", stack->array[i]);}printf("\n");
}int main() {int capacity;printf("请输入栈的容量: ");scanf("%d", &capacity);Stack *stack = initStack(capacity);int choice, data;while (1) {printf("1. 入栈  2. 出栈  3. 查看栈顶元素  4. 打印栈  5. 退出\n");printf("请输入选项: ");scanf("%d", &choice);switch (choice) {case 1:printf("请输入要入栈的数据: ");scanf("%d", &data);push(stack, data);break;case 2:data = pop(stack);if (data != -1)printf("出栈的元素是: %d\n", data);break;case 3:data = peek(stack);if (data != -1)printf("栈顶元素是: %d\n", data);break;case 4:printStack(stack);break;case 5:free(stack->array);free(stack);exit(0);default:printf("无效选项\n");}}return 0;
}

下面是使用C++的stack库实现的栈,这个相当于没有实现任何功能,考研可不推荐这样子玩,当然如果考察的重点不是栈,而是使用栈解决某个问题,那么可以使用stack

#include <iostream>
#include <stack>using namespace std;int main() {stack<int> myStack;while (true) {int choice, data;cout << "1. 入栈  2. 出栈  3. 查看栈顶元素  4. 打印栈  5. 退出" << endl;cout << "请输入选项: ";cin >> choice;switch (choice) {case 1:cout << "请输入要入栈的数据: ";cin >> data;myStack.push(data);break;case 2:if (!myStack.empty()) {cout << "出栈的元素是: " << myStack.top() << endl;myStack.pop();} else {cout << "栈为空" << endl;}break;case 3:if (!myStack.empty()) {cout << "栈顶元素是: " << myStack.top() << endl;} else {cout << "栈为空" << endl;}break;case 4:if (!myStack.empty()) {cout << "栈中的元素: ";stack<int> tempStack = myStack;while (!tempStack.empty()) {cout << tempStack.top() << " ";tempStack.pop();}cout << endl;} else {cout << "栈为空" << endl;}break;case 5:return 0;default:cout << "无效选项" << endl;}}return 0;
}
http://www.ds6.com.cn/news/80425.html

相关文章:

  • 做网站需要什么基础如何快速推广网站
  • 长沙建站官网莱阳seo排名
  • 中国航天空间站最新消息seo新闻
  • 潍坊网站制作熊掌号关键词排名的工具
  • 深圳微商城网站制作多少钱青岛网络优化厂家
  • 拉企业做网站好干吗培训体系搭建
  • 装修公司做网站的好处公司的公关
  • 日本签证那个网站做的好游戏推广怎么做
  • 南昌做网站优化的公司企业网站建设服务
  • 网站怎么屏蔽国内访问教育培训机构推荐
  • wordpress 为什么流行肇庆seo优化
  • 常德网站建设策划方案2022百度指数排名
  • 网络搭建写真网站百度网址ip
  • 网站建设电话销售seo快速收录快速排名
  • 深圳企业医疗网站建设qq排名优化网站
  • 深圳十大网站建设公司网站如何发布
  • 优秀的字体设计网站seo推广怎么收费
  • 房产网站建设的目的郑州网站seo推广
  • 深圳做微信网站设计培训课程名称大全
  • asp 网站发布器小学生一分钟新闻播报
  • 免费房地产网站模板seo引擎优化外包
  • 成都网站建设的公司百度seo效果
  • 酒店网站怎么做seo交流
  • 十堰网站建设网络营销毕业论文范文
  • 杭州网站推广优化seo优化内页排名
  • 上海网站制作工作室全网营销推广靠谱吗
  • 医院网站建设情况汇报免费的黄冈网站有哪些平台
  • 北京电力交易中心客服电话徐州新站百度快照优化
  • 网站建设解决方案重要性长沙网站优化排名推广
  • 南山网站建设关键词查询工具哪个好