c模拟链表操作,笔记-创新互联

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
//动态栈,由链表实现 ,上面节点指向下面一个节点 
//结构体:节点(表示一个元素) 
typedef struct Node
{
 int data;
 struct Node * pNext;
}NODE,*PNODE;

//结构体:栈,栈顶节点的指针,栈底节点指针(栈底指针指向栈底节点的下一个存储空间,因为是初始化的时候分配的空间,此时还没有插入节点)。 
typedef struct Stack
{
 PNODE pTop;
 PNODE pButtom;
        
} STACK,*PSTACK;
//为栈分配内存 
void init(PSTACK pStack); 
//压栈
void push(PSTACK pStack,int val);
//遍历 
void traverse(PSTACK pStack);
//弹栈,把出栈的节点的数据存入给定的变量中(给地址) 
bool pop(PSTACK pStack,int * val); 
int main(void)
{
 //初始化
 STACK stack;
 init(&stack); 
 //压栈
  push(&stack,1);
   push(&stack,2);
    push(&stack,3);
     push(&stack,4);
     //遍历
    traverse(&stack); 
    //弹栈
    int a = 0;
    pop(&stack,&a); 
    printf("\n出栈的元素是:%d\n",a);
    //遍历
    traverse(&stack); 
     getchar();
 return 0;    
}
//初始化栈 
void init(PSTACK pStack)
{
     //为节点分配内存 
 pStack->pTop = (PNODE)malloc(sizeof(NODE));
 if(pStack->pTop == NULL)
 {
  printf("动态内存分配失败!\n");
  exit(-1);
 }else
 {
     //栈顶指针和栈底指针相等 ,都指向初始节点 
  pStack->pButtom = pStack->pTop;  
  pStack->pTop->pNext = NULL;  //初始节点的下个节点为NULL 
 }
}
//压栈 
void push(PSTACK pStack,int val)
{
      //创建一个节点  
      PNODE pNewNode= (PNODE)malloc(sizeof(NODE));
      pNewNode->data = val;//数据域赋值 
      pNewNode->pNext = NULL;//指针域为空(栈顶) 
      pNewNode->pNext = pStack->pTop;//新加入的节点的下一个节点指向原来的栈顶节点 
      pStack->pTop = pNewNode;//栈顶指针指向新压入的节点
      return; 
}
//遍历
void traverse(PSTACK pStack)
{
      PNODE pNode = pStack->pTop;
      while(pNode != pStack->pButtom)
      {
       printf("%d\t",pNode->data);
       pNode =  pNode->pNext;      
      }
} 
//弹栈 
bool pop(PSTACK pStack,int * val)
{    
     if(pStack->pTop == pStack->pButtom)
    {
     return   false;              
    }
    *val = pStack->pTop->data; 
    PNODE r= pStack->pTop;//记录栈顶节点 
    pStack->pTop = pStack->pTop->pNext;
    free(r); 
    r=NULL;//释放原来栈顶节点的空间 
    return true;
   
}

创新互联公司服务项目包括涪城网站建设、涪城网站制作、涪城网页制作以及涪城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,涪城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到涪城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

名称栏目:c模拟链表操作,笔记-创新互联
当前路径:https://www.cdcxhl.com/article40/dcsjho.html

成都网站建设公司_创新互联,为您提供定制开发网站策划移动网站建设响应式网站商城网站网站维护

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

搜索引擎优化