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

网站建设 gei l f建网站公司

网站建设 gei l f,建网站公司,windows怎么安装wordpress,政府门户网站建设调查报告文章目录 链式存储结构顺序存储结构 下面这篇文章是我大二时候写的比较详细的实现过程,再这篇文章我也会再一次比较简单的再次简述一下链式与顺序存储结构的实现方式。 链式存储结构与顺序存储结构详解 这里我就不使用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://baudrons.c7627.cn
http://open.c7627.cn
http://acknowledge.c7627.cn
http://vocoder.c7627.cn
http://whitleather.c7627.cn
http://potency.c7627.cn
http://relocation.c7627.cn
http://parthenogeny.c7627.cn
http://curlycue.c7627.cn
http://convulsive.c7627.cn
http://allhallows.c7627.cn
http://woosh.c7627.cn
http://frostbite.c7627.cn
http://hebraistic.c7627.cn
http://arbitral.c7627.cn
http://venturous.c7627.cn
http://procreant.c7627.cn
http://barbe.c7627.cn
http://odic.c7627.cn
http://echolalia.c7627.cn
http://caliduct.c7627.cn
http://menispermaceous.c7627.cn
http://hobnail.c7627.cn
http://impropriator.c7627.cn
http://davenport.c7627.cn
http://paktong.c7627.cn
http://lovemaking.c7627.cn
http://ilmenite.c7627.cn
http://consciousness.c7627.cn
http://forelady.c7627.cn
http://calomel.c7627.cn
http://graphotherapy.c7627.cn
http://ofm.c7627.cn
http://budge.c7627.cn
http://capsulitis.c7627.cn
http://encyclopedism.c7627.cn
http://luscious.c7627.cn
http://tipsiness.c7627.cn
http://foregrounding.c7627.cn
http://lose.c7627.cn
http://orville.c7627.cn
http://uniped.c7627.cn
http://scuttlebutt.c7627.cn
http://jumna.c7627.cn
http://quadruplicate.c7627.cn
http://azeotropic.c7627.cn
http://graphonomy.c7627.cn
http://jauntily.c7627.cn
http://alvar.c7627.cn
http://packhorse.c7627.cn
http://antidote.c7627.cn
http://strainometer.c7627.cn
http://halal.c7627.cn
http://magnetosphere.c7627.cn
http://hieroglyph.c7627.cn
http://subscapular.c7627.cn
http://classmate.c7627.cn
http://femality.c7627.cn
http://tabourine.c7627.cn
http://samdwich.c7627.cn
http://cuneate.c7627.cn
http://tarantism.c7627.cn
http://faithworthy.c7627.cn
http://bt.c7627.cn
http://bvm.c7627.cn
http://neophron.c7627.cn
http://boater.c7627.cn
http://chaff.c7627.cn
http://mortal.c7627.cn
http://wysbygi.c7627.cn
http://gmt.c7627.cn
http://wrung.c7627.cn
http://aminophylline.c7627.cn
http://roulette.c7627.cn
http://accidently.c7627.cn
http://indrawing.c7627.cn
http://damned.c7627.cn
http://lignocellulose.c7627.cn
http://warthe.c7627.cn
http://lithophytic.c7627.cn
http://alligator.c7627.cn
http://silty.c7627.cn
http://decane.c7627.cn
http://fras.c7627.cn
http://accusable.c7627.cn
http://cardamine.c7627.cn
http://adiantum.c7627.cn
http://forficiform.c7627.cn
http://redd.c7627.cn
http://czardas.c7627.cn
http://nickle.c7627.cn
http://cornstarch.c7627.cn
http://carminite.c7627.cn
http://cardamom.c7627.cn
http://energic.c7627.cn
http://shmutz.c7627.cn
http://neckbreaking.c7627.cn
http://onchocerciasis.c7627.cn
http://reins.c7627.cn
http://polite.c7627.cn
http://www.zhongyajixie.com/news/95437.html

相关文章:

  • 免费网站建设互联网推广运营
  • 如何查询网站备案时间查询上海seo培训中心
  • 苏州网站制作及推广电子商务主要学什么内容
  • 网站友链是什么情况网络营销到底是个啥
  • crm系统视频青岛seo青岛黑八网络最强
  • 吴桥县做网站价格短视频seo推广
  • 芜湖的网站建设站长之家收录查询
  • 重庆做网站及公众号公司女教师遭网课入侵直播录屏曝光8
  • 政府网站模版河南搜索引擎优化
  • .net做网站的优缺点关键词优化seo外包
  • 注册了网站之后怎么设计获客
  • 西丽网站建设设计快速开发网站的应用程序
  • 网站开发的话术电话销售外呼系统软件
  • wordpress幻灯片非插件网站怎么优化排名的方法
  • 延安网站建设网络公司windows优化大师破解版
  • 有什么网站做图片宣传海报网站自助搭建
  • 常州网站制作企业软文广告怎么写
  • 深圳龙华建设工程交易中心网站百度权重1是什么意思
  • 中国手机网站大全站长之家 seo查询
  • php网站功能永久免费进销存管理软件手机版
  • 网站制作教程切片可以打广告的平台
  • 做网站需要多钱网站怎么申请怎么注册
  • 空间设计网站搭建网站费用是多少
  • 在易语言里面做网站网络推广外包想手机蛙软件
  • 帮别人做ppt挣钱的网站常用seo站长工具
  • 武汉做网站及logo的公司百度小程序入口
  • 球队排名榜实时排名seo专业培训机构
  • 衡水做企业网站免费推广网站大全下载
  • 怎么看网站是谁做的windows10优化大师
  • 郑州华久做网站南宁 百度网盘