189 8069 5689

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

#include
#include
#include
//动态栈,由链表实现 ,上面节点指向下面一个节点 
//结构体:节点(表示一个元素) 
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模拟链表操作,笔记-创新互联
本文网址:http://cdxtjz.com/article/dcsjho.html

其他资讯