专业营销网站开发,上蔡网站建设,网站推广是怎么做的,网站开发用了哪些技术链栈链栈简述示例代码开发环境运行结果注意链栈简述
链栈从概念上看是链表和栈的结合#xff0c;含有栈先进后出的特性#xff0c;也具有链表的动态增加节点的特性#xff0c;这里相当于在链表的基础上增加只能从一端操作#xff0c;且保持先进后出的特性。将头节点所在的…
链栈链栈简述示例代码开发环境运行结果注意链栈简述
链栈从概念上看是链表和栈的结合含有栈先进后出的特性也具有链表的动态增加节点的特性这里相当于在链表的基础上增加只能从一端操作且保持先进后出的特性。将头节点所在的那端看作栈顶头节点后紧接着的节点所在的位置即第一个存储数据的节点所在的位置为出栈入栈的位置。
示例代码
直接上代码 LinkStack.h
#pragma oncetypedef struct LINKNODE {struct LINKNODE *pNext;
}LinkNode;class LinkStack
{
public:LinkStack();~LinkStack();void pushLinkStack(LinkNode *data);void popLinkStack();LinkNode *getTopLinkStack();int getSizeLinkStack();void clearStack();
private://这里可以不定义该类类型的指针,该类类型变量定义后只能使用单独的初始化函数初始化//不能用构造函数会造成循环调用构造函数的死循环中
// LinkStack *m_LinkStack;LinkNode m_head;int m_size;
};
LinkStack.cpp
#include LinkStack.hLinkStack::LinkStack()
{m_size 0;
}LinkStack::~LinkStack()
{
}void LinkStack::pushLinkStack(LinkNode * data)
{if (data nullptr){return;}data-pNext m_head.pNext;m_head.pNext data;m_size;
}void LinkStack::popLinkStack()
{LinkNode *pDel m_head.pNext;m_head.pNext pDel-pNext;m_size--;
}LinkNode * LinkStack::getTopLinkStack()
{return m_head.pNext;
}int LinkStack::getSizeLinkStack()
{return m_size;
}void LinkStack::clearStack()
{m_head.pNext nullptr;m_size 0;
}
main.cpp
#include iostream
#include LinkStack.h
using namespace std;typedef struct PERSON
{LinkNode node;char name[64];int age;
}Person;void test()
{LinkStack *pLinkStack new LinkStack;Person p1, p2, p3,p4,p5;strcpy_s(p1.name,hudh);strcpy_s(p2.name,呼呼);strcpy_s(p3.name,jidi);strcpy_s(p4.name, hus);strcpy_s(p5.name, akios);p1.age 34;p2.age 45;p3.age 67;p4.age 67;p5.age 78;pLinkStack-pushLinkStack((LinkNode*)p1);pLinkStack-pushLinkStack((LinkNode*)p2);pLinkStack-pushLinkStack((LinkNode*)p3);pLinkStack-pushLinkStack((LinkNode*)p4);pLinkStack-pushLinkStack((LinkNode*)p5);while (pLinkStack-getSizeLinkStack() 0) {Person *pData (Person*)pLinkStack-getTopLinkStack();cout name: pData-name age: pData-age endl;pLinkStack-popLinkStack();}delete pLinkStack;pLinkStack nullptr;
} int main()
{test();return 0;
}// 运行程序: Ctrl F5 或调试 “开始执行(不调试)”菜单
// 调试程序: F5 或调试 “开始调试”菜单// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”“添加新项”以创建新的代码文件或转到“项目”“添加现有项”以将现有代码文件添加到项目
// 6. 将来若要再次打开此项目请转到“文件”“打开”“项目”并选择 .sln 文件
开发环境
vs2017 控制台输出程序。
运行结果 注意
栈是连续的存储空间故而在数量上会受到限制而链栈打破了栈的内存空间的连续性扩展性更强。