互联网网站定位,网站建设竣工验收报告,绿色食品网站建设可行性,做网站购买备案域名目录 题外话
顺序表和链表优缺点以及特点
一.栈的特点
二. 栈的操作
2.1初始化
2.2 栈的销毁
2.3 栈的插入
2.3 输出top
2.4 栈的删除
2.5 输出栈 题外话
顺序表和链表优缺点以及特点 特点#xff1a;顺序表#xff0c;逻辑地址物理地址。可以任意访问#xff0c…目录 题外话
顺序表和链表优缺点以及特点
一.栈的特点
二. 栈的操作
2.1初始化
2.2 栈的销毁
2.3 栈的插入
2.3 输出top
2.4 栈的删除
2.5 输出栈 题外话
顺序表和链表优缺点以及特点 特点顺序表逻辑地址物理地址。可以任意访问访问时间复杂度O1.。实现分配空 间当空间不足时要动态扩容。顺序表在销毁时可以直接free但链表要一 个个删 除。 链表不连续的空间靠指针指向下一个地址。不用实现分配空间。 优缺点 顺序表适和访问不适合插入删除时间负责度为ON。链表适和插入删除操 作。 一.栈的特点 1先进后出 2栈不能任意打印栈只能访问栈顶 3栈只能尾插头删
二. 栈的操作
2.1初始化 void STInit(ST* pst)
{assert(pst);pst-a NULL;pst-top -1;pst-capacity 0;
}
2.2 栈的销毁
2.3 栈的插入 注意 如果你初始化为0那么就是先插入在 如果你初始化为-1那就是先在插入。 }
//插入
void STPush(ST* pst, STDataType x)
{assert(pst);if (pst-top pst-capacity-1){int newcapacity pst-capacity 0 ? 4 : pst-capacity * 2;STDataType* tmp (STDataType*)realloc(pst-a, sizeof(STDataType) * newcapacity);if (tmp NULL) {perror(realloc fail);return;}pst-a tmp;pst-capacity newcapacity;}pst-top;pst-a[pst-top] x;
} 2.3 输出top 注意
由于栈的特性只能先进先出尾插头删不能任意输出所以我们只能输出头。
void STTop(ST* pst)
{assert(pst);assert(pst-top -1);return pst-a[pst-top];
}
2.4 栈的删除
//删除
void STPop(ST* pst)
{assert(pst);assert(pst-top-1);pst-top--;2.5 输出栈
while (STEmpty(st) ! true) {printf(%d , STTop(st));STPop(st);
} 栈的完整代码
#pragma once
#includestdio.h
#includeassert.h
#includestdlib.h
#includestdbool.htypedef int STDataType;
typedef struct STack
{STDataType* a; //数值的指针是下标int top;int capacity;
}ST;void STInit(ST* pst);
void STDestory(ST* pst);
void STPush(ST* pst, STDataType x);
void STPop(ST* pst);
bool STEmpty(ST* pst);
int STSize(ST* pst);
STDataType STTop(ST* pst);#includeStack.h
#includeassert.h
#includestdio.h
#includestdlib.hvoid STInit(ST* pst)
{assert(pst);pst-a NULL;pst-top -1;pst-capacity 0;
}
void STDestory(ST* pst)
{assert(pst);free(pst-a);pst-a NULL;pst-top -1;pst-capacity 0;}
//插入
void STPush(ST* pst, STDataType x)
{assert(pst);if (pst-top pst-capacity-1){int newcapacity pst-capacity 0 ? 4 : pst-capacity * 2;STDataType* tmp (STDataType*)realloc(pst-a, sizeof(STDataType) * newcapacity);if (tmp NULL) {perror(realloc fail);return;}pst-a tmp;pst-capacity newcapacity;}pst-top;pst-a[pst-top] x;
}
//输出头结点
STDataType STTop(ST* pst)
{assert(pst);assert(pst-top -1);return pst-a[pst-top];
}
//删除
void STPop(ST* pst)
{assert(pst);assert(pst-top-1);pst-top--;
}
bool STEmpty(ST* pst)
{assert(pst);if (pst-top -1) {return true;}else {return false;}
}
int STSize(ST* pst)
{assert(pst);return pst-top;
}#define _CRT_SECURE_NO_WARNINGS
#includestdio.h
#includestdlib.h
#includeStack.hvoid Test1() {ST st;STInit(st);STPush(st, 1);STPush(st, 2);STPush(st, 3);STPush(st, 4);printf(%d\n, STTop(st));STPop(st);printf(%d\n, STTop(st));while (STEmpty(st) ! true) {printf(%d , STTop(st));STPop(st);}}int main()
{Test1();return 0;
}