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

临夏州建设银行网站wordpress 修改发帖时间

临夏州建设银行网站,wordpress 修改发帖时间,系统网,小狐狸动画制作软件app下载一、个人理解栈是线性表的一种衍生,和之前的顺序表和链表在插入和删除元素上有较大差异,其他基本相同,栈是数据只能插入表的尾部(栈顶),删除数据时只能删除表的尾部(栈顶)数据&#…

一、个人理解

栈是线性表的一种衍生,和之前的顺序表和链表在插入和删除元素上有较大差异,其他基本相同,栈是数据只能插入表的尾部(栈顶),删除数据时只能删除表的尾部(栈顶)数据,就是大家经常背的顺口溜:后入先出。后插入的数据先删除。

二、图解

这里把数组竖起来了,是方便理解,看得更清楚。

三、名词解释

1、出栈、弹栈

是一个意思,就是把数据从栈顶移除。

2、入栈、压栈

是一个意思,就是把数据从栈顶插入。

3、LIFO

LAST IN FIRST OUT的简写,也就是后进先出的意思。

4、顺序栈和链栈

实现方式上的不同,顺序栈是用数组实现,而链栈是用链表实现。

5、上溢

栈已满,但数据还需要继续入栈。上溢一般认为是一种错误,因为可能导致数据录入失败,或者导致数据录入延时。当是顺序栈时,对此情况有两种措施:

一是抛出错误。

二是重新申请新栈,把旧栈数据写入到新栈中,不推荐,比较耗时。

6、下溢

栈已空,但还是要出栈。下溢一般认为是一种结束标志,因为并不会有数据上的缺失。

四、函数实现

1、InitSqStack

(1)用途

初始化顺序栈。

(2)源码

Status InitSqStack(SqStack* S)
{printf("Init SqStack  : ");JudgeAllNullPointer(S);S->BasePointer    = (SqElemType*)MyMalloc(sizeof(SqElemType) * SQ_STACK_MAX_SIZE);S->TopPointer     = S->BasePointer;S->SqStackMaxSize = SQ_STACK_MAX_SIZE;printf("OK\n");PrintPretty();return SuccessFlag;   
}

(3)参数

参数名

说明

S

需要初始化的SqStack*类型顺序栈。

2、JudgeSqStackIsEmpty

(1)用途

判断顺序栈是否为空。

当栈顶指针和栈底指针相等时,表示栈为空,反之非空。

(2)源码

Status JudgeSqStackIsEmpty(SqStack* S)
{printf("Judge SqStack : ");JudgeAllNullPointer(S);if(S->BasePointer == S->TopPointer){printf("Empty\n");PrintPretty();return SuccessFlag;}printf("Not Empty\n");PrintPretty();return FailFlag;
}

(3)参数

参数名

说明

S

需要判断是否为空的SqStack*类型顺序栈。

3、GetSqStackLen

(1)用途

求顺序栈的长度。

栈顶指针减去栈底指针为顺序栈的长度,原理为相同类型的指针相减得到字节数,它会再除以一个栈类型(头文件中的结构体SqElemType)的字节长度,得到最终的顺序栈的长度。

(2)源码

SqStackMaxSizeType GetSqStackLen(SqStack* S)
{JudgeAllNullPointer(S);return S->TopPointer - S->BasePointer;
}

(3)参数

参数名

说明

S

需要求栈长度的SqStack*类型顺序栈。

五、测试代码

1、SqStack.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/time.h>
#include "SqStack.h"void PrintPretty()
{printf("*********************************\n");
}void PrintPretty_V1()
{printf("################\n");
}void *MyMalloc(size_t size)
{void *Result = (void *)malloc(size);if(Result == NULL){printf("malloc Function Exec Fail , Out Of Memory ,Exit!!!\n");exit(ExceptionExitFlag);}return Result;
}void JudgeAllNullPointer(void* P)
{if(!P){printf("Pointer Is Null ,Exit !\n");exit(ExceptionExitFlag);}
}Status InitSqStack(SqStack* S)
{printf("Init SqStack  : ");JudgeAllNullPointer(S);S->BasePointer    = (SqElemType*)MyMalloc(sizeof(SqElemType) * SQ_STACK_MAX_SIZE);S->TopPointer     = S->BasePointer;S->SqStackMaxSize = SQ_STACK_MAX_SIZE;printf("OK\n");PrintPretty();return SuccessFlag;   
}Status JudgeSqStackIsEmpty(SqStack* S)
{printf("Judge SqStack : ");JudgeAllNullPointer(S);if(S->BasePointer == S->TopPointer){printf("Empty\n");PrintPretty();return SuccessFlag;}printf("Not Empty\n");PrintPretty();return FailFlag;
}SqStackMaxSizeType GetSqStackLen(SqStack* S)
{JudgeAllNullPointer(S);return S->TopPointer - S->BasePointer;
}

2、SqStack.h

#ifndef SqStack_H
#define SqStack_H#define InsertDataArrayLen 8
#define SQ_STACK_MAX_SIZE  6#define ExceptionExitFlag -1
#define SuccessFlag        1
#define FailFlag           0
#define StudentNumLen      8
#define StudentNameLen     8typedef int Status;
typedef long long int SqStackMaxSizeType;typedef struct SqElemType
{char StudentNum[StudentNumLen];char StudentName[StudentNameLen];int  StudentScore;
}SqElemType;typedef struct 
{SqElemType*        BasePointer;SqElemType*        TopPointer;SqStackMaxSizeType SqStackMaxSize;
}SqStack;void *MyMalloc(size_t size);
void JudgeAllNullPointer(void* P);
void PrintPretty();
void PrintPretty_V1();Status InitSqStack(SqStack* S);
Status JudgeSqStackIsEmpty(SqStack* S);
SqStackMaxSizeType GetSqStackLen(SqStack* S);#endif

3、main.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "SqStack.h"int main()
{//测试数据生成SqElemType *InsertSqElemArray = (SqElemType *)MyMalloc(sizeof(SqElemType) * InsertDataArrayLen);int i;for(i=0; i<InsertDataArrayLen; i++){strcpy(InsertSqElemArray[i].StudentNum ,"X666");strcpy(InsertSqElemArray[i].StudentName,"Sun");InsertSqElemArray[i].StudentScore = i + 100;}//测试顺序栈SqStack* S = (SqStack*)MyMalloc(sizeof(SqStack));InitSqStack(S);JudgeSqStackIsEmpty(S);printf("SqStack Len   : %lld\n",GetSqStackLen(S));PrintPretty();//释放内存free(InsertSqElemArray);InsertSqElemArray = NULL;return SuccessFlag;
}

4、makefile

CC = gcc
CFLAG_EXEC = -Wall -O3
CFLAG_ALIAS = -o
RM_COMM = rm -rfall : mainmain : $(CC) $(CFLAG_EXEC) SqStack.c main.c $(CFLAG_ALIAS) TestSqStackclean : $(RM_COMM) TestSqStack

六、测试结果

[gbase@czg2 LinearTable_Stack]$ make clean
rm -rf TestSqStack[gbase@czg2 LinearTable_Stack]$ make
gcc -Wall -O3 SqStack.c main.c -o TestSqStack[gbase@czg2 LinearTable_Stack]$ ./TestSqStack 
Init SqStack  : OK
*********************************
Judge SqStack : Empty
*********************************
SqStack Len   : 0
*********************************

七、顺序栈的应用

大家可以参考一下之前写的文章《leecode-C语言实现-20. 有效的括号》,里面用到了顺序栈的知识。

http://www.yayakq.cn/news/307257/

相关文章:

  • 旅游网站建设规划报告怎么写吉林省长春市建设局网站
  • 做网站要交百分七十定金免费首页2空间
  • 大学生做家教网站什么是电子商务采购
  • 网站免费建站厂商定制新北区城乡建设局网站
  • sns类网站有哪些漫画交流网站怎么做
  • 校园网站首页模板定制家具品牌排行榜前十名
  • 学校网站建设小组及分工windows优化大师好不好
  • wordpress categoryinwordpress 优化速度
  • 用友erp管理软件系统李飞seo
  • 学校网站开发门户网站建设工作流程
  • 四川网站建设培训软文营销的技巧有哪些
  • 手机网站客户端设计与实现品牌全案设计包括什么
  • 企业网站建设备案都需要什么商城网站模板建设
  • 电商实训网站建设报告重庆电子商务公司排名
  • 重庆网站推广运营3d全屋定制设计软件
  • 电子商务网站建设论文资料dw网页制作步骤图片
  • 网站建设用什么教材王烨画家简历
  • 电子商务网站建设与管理教材评价乔拓云官网免费
  • 如何破解网站后台管理河北省城乡规划建设局官方网站
  • 凯发网站设计开发建设网站平台
  • 搜讯网站开发做微站比较好的网站
  • 建设工程合同 网站wordpress安装二级目录下
  • 爱站网长尾网站图片被盗连怎么办啊
  • 做医疗网站学校网站的常规化建设
  • 给网站做绝对路径电子商务网站建设的一般步骤有
  • 展览搭建设计网站wordpress tag固定
  • 专业做公司宣传网站的郑州看妇科最好的医院是哪里
  • 建个微商城网站多少钱wordpress cdts小说
  • 宿州做网站公司最好的微网站建设公司
  • 网站做ssl证书有风险wordpress自动化采集