如何实现栈的创建、入栈、出栈、清空、遍历等操作?

2026-04-02 12:021阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计539个文字,预计阅读时间需要3分钟。

如何实现栈的创建、入栈、出栈、清空、遍历等操作?

伪原创,是对原创内容进行改写和调整,使其在保持原意的基础上,呈现出新的表达方式。以下是对以下内容的简写和

原文开头内容:“随着互联网的快速发展,原创内容的需求日益增长。然而,由于版权保护意识的提高,直接复制粘贴他人作品的现象逐渐减少。为了满足市场需求,许多内容创作者开始尝试伪原创,以创新的方式呈现内容。

简写改写内容:互联网时代,原创内容需求旺盛。版权保护加强,直接抄袭减少。创作者探索伪原创,创新内容呈现。

如何实现栈的创建、入栈、出栈、清空、遍历等操作?

#include#include#includetypedefstructNode{intdata;structNode*pNext;}NODE,*PNODE #include#include#includetypedef struct Node{int data;struct Node *pNext;}NODE,*PNODE;typedef struct Stack{PNODE pTop;PNODE pBottom;}STACK,*PSTACK;void init(PSTACK pS);void push (PSTACK pS,int val);void traverse(PSTACK pS);bool pop(PSTACK pS,int * pVal);bool empty(PSTACK pS);void clear(PSTACK pS);int main(){    STACK S;int val;init(//造出一个空栈for(int i=0;i<=15;i++){      push(}/*push(//压栈push(push(push( push(push(*/    traverse(//遍历输出//出栈//pop(if(pop(}else{     printf("出栈成功");}     traverse(//遍历输出//traverse(//遍历输出    clear(//清空    if(empty(}else{          printf("栈为非空\n");}return 0;}void init(PSTACK pS){pS->pTop=(PNODE)malloc(sizeof(NODE));if(NULL==pS->pTop){printf("动态内存分配失败");exit(-1);}else{pS->pBottom = pS->pTop;pS->pTop->pNext = NULL;}}void push (PSTACK pS,int val){PNODE pNew=(PNODE)malloc(sizeof(NODE));pNew->data=val;pNew->pNext=pS->pTop;pS->pTop=pNew;return;}void traverse(PSTACK pS){PNODE p=pS->pTop;while(p!=pS->pBottom){printf("%d  ",p->data);p=p->pNext;}printf("\n");}bool empty(PSTACK pS){if(pS->pTop==pS->pBottom){return true;}else{return false;}}bool pop(PSTACK pS,int * pVal){if(empty(pS))//pS存放的就是栈的地址{return true;}else{        PNODE r = pS->pTop;* pVal = r->data;pS->pTop = r->pNext;free(r);r = NULL;return true;}}void clear(PSTACK pS){if(empty(pS)){return;}else{PNODE p=pS->pTop;PNODE q=NULL;while(p!=pS->pBottom){q=p->pNext;free(p);p=q;}pS->pTop=pS->pBottom;}}

版权声明:本文为博主原创文章,未经博主允许不得转载。

栈的操作(创建,入栈,出栈,清空,遍历等等)

本文共计539个文字,预计阅读时间需要3分钟。

如何实现栈的创建、入栈、出栈、清空、遍历等操作?

伪原创,是对原创内容进行改写和调整,使其在保持原意的基础上,呈现出新的表达方式。以下是对以下内容的简写和

原文开头内容:“随着互联网的快速发展,原创内容的需求日益增长。然而,由于版权保护意识的提高,直接复制粘贴他人作品的现象逐渐减少。为了满足市场需求,许多内容创作者开始尝试伪原创,以创新的方式呈现内容。

简写改写内容:互联网时代,原创内容需求旺盛。版权保护加强,直接抄袭减少。创作者探索伪原创,创新内容呈现。

如何实现栈的创建、入栈、出栈、清空、遍历等操作?

#include#include#includetypedefstructNode{intdata;structNode*pNext;}NODE,*PNODE #include#include#includetypedef struct Node{int data;struct Node *pNext;}NODE,*PNODE;typedef struct Stack{PNODE pTop;PNODE pBottom;}STACK,*PSTACK;void init(PSTACK pS);void push (PSTACK pS,int val);void traverse(PSTACK pS);bool pop(PSTACK pS,int * pVal);bool empty(PSTACK pS);void clear(PSTACK pS);int main(){    STACK S;int val;init(//造出一个空栈for(int i=0;i<=15;i++){      push(}/*push(//压栈push(push(push( push(push(*/    traverse(//遍历输出//出栈//pop(if(pop(}else{     printf("出栈成功");}     traverse(//遍历输出//traverse(//遍历输出    clear(//清空    if(empty(}else{          printf("栈为非空\n");}return 0;}void init(PSTACK pS){pS->pTop=(PNODE)malloc(sizeof(NODE));if(NULL==pS->pTop){printf("动态内存分配失败");exit(-1);}else{pS->pBottom = pS->pTop;pS->pTop->pNext = NULL;}}void push (PSTACK pS,int val){PNODE pNew=(PNODE)malloc(sizeof(NODE));pNew->data=val;pNew->pNext=pS->pTop;pS->pTop=pNew;return;}void traverse(PSTACK pS){PNODE p=pS->pTop;while(p!=pS->pBottom){printf("%d  ",p->data);p=p->pNext;}printf("\n");}bool empty(PSTACK pS){if(pS->pTop==pS->pBottom){return true;}else{return false;}}bool pop(PSTACK pS,int * pVal){if(empty(pS))//pS存放的就是栈的地址{return true;}else{        PNODE r = pS->pTop;* pVal = r->data;pS->pTop = r->pNext;free(r);r = NULL;return true;}}void clear(PSTACK pS){if(empty(pS)){return;}else{PNODE p=pS->pTop;PNODE q=NULL;while(p!=pS->pBottom){q=p->pNext;free(p);p=q;}pS->pTop=pS->pBottom;}}

版权声明:本文为博主原创文章,未经博主允许不得转载。

栈的操作(创建,入栈,出栈,清空,遍历等等)