栈的基本操作有哪些,包括创建、入栈、出栈、清空和遍历等?

2026-06-10 23:574阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

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

栈的基本操作有哪些,包括创建、入栈、出栈、清空和遍历等?

当然可以,请您提供需要改写的伪原创开头内容,我会根据您的要求进行改写。

#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;}}

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

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

栈的基本操作有哪些,包括创建、入栈、出栈、清空和遍历等?

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

栈的基本操作有哪些,包括创建、入栈、出栈、清空和遍历等?

当然可以,请您提供需要改写的伪原创开头内容,我会根据您的要求进行改写。

#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;}}

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

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

栈的基本操作有哪些,包括创建、入栈、出栈、清空和遍历等?