邯郸网站建设优化排名,yw最新域名备案查询,慈溪网站建设,阳泉移动网站建设我们初步了解了C#xff0c;也用C语言实现过栈#xff0c;就我们当前所更新过的有关C学习内容以栈为例子#xff0c;来简单对比一下C语言和C。 1.C中栈的实现 栈的C语言实现在【数据结构】栈的概念、结构和实现详解-CSDN博客 #xff0c;下面是C实现的栈#xff0c;
在St…
我们初步了解了C也用C语言实现过栈就我们当前所更新过的有关C学习内容以栈为例子来简单对比一下C语言和C。 1.C中栈的实现 栈的C语言实现在【数据结构】栈的概念、结构和实现详解-CSDN博客 下面是C实现的栈
在Stack.cpp一个文件实现就行。
#include iostream
#include assert.h
using namespace std;
typedef int STDateType;class Stack //栈类
{
public: //类的方法成员函数void STInit(int n 4) //栈初始化用到了缺省参数{_a (STDateType*)malloc(n * sizeof(STDateType));if (nullptr _a){perror(malloc fail);return;}_top 0;_capacity n;}void STDistroy() //栈的销毁{free(_a);_a nullptr;_top _capacity 0;}void STPush(STDateType x) //入栈{if (_top _capacity){int newcapacity _capacity * 2;STDateType* tmp (STDateType*)realloc(_a, newcapacity * sizeof(STDateType));if (tmp nullptr){perror(realloc fail);return;}_a tmp;_capacity newcapacity;}_a[_top] x;_top;}void STPop() //出栈{assert(_top 0);_top--;}STDateType STTopDate() //获取栈顶元素{assert(_top 0);return _a[_top - 1];}bool STEmpty() //判断栈是否为空{return _top 0;}int STSize() //获取栈元素个数{return _top;}private: //类的属性成员变量STDateType* _a;int _top;int _capacity;
};
在同一个文件的main函数里测试一下。
int main()
{Stack st;st.STInit();st.STPush(1);st.STPush(2);st.STPush(3);while (!st.STEmpty()){cout st.STTopDate() ;st.STPop();}st.STDistroy();return 0;
} 2.C语言与C对比
C面向对象有3大特征封装、继承、多态。Stack的对比我们可以初步了解一下封装。
C中数据和函数都放在了类里面通过访问限定符进行了限制不能再随意通过对象直接进行修改数据这是C封装的一种体现这个是最重要的变化。这里的封装本质就是一种更严格规范的管理避免出现乱访问修改问题。C的封装后续还要不断学习。
C中有一些相对方便的语法比如Init给缺省参数会方便很多成员函数不用传对象地址因为this指针隐含的传递了方便面很多类型不再需要typedef直接用类名。 本篇就介绍到这里拜拜~