ch3_lstack.c

来自「本人讲授数据结构课程时的所写的示例程序」· C语言 代码 · 共 70 行

C
70
字号
/*
栈的链式实现
author: kk.h
date: 2006.9
http://www.cocoon.org.cn
*/
#include "stdio.h"
/* 数据元素的类型 */
typedef int ElemType;

/* 节点的类型(包括头节点) */
typedef struct Node{
  ElemType elem;
  struct Node *next;
}SNode;

/* 初始化,头节点 */
InitStack(SNode* pS)
{
  pS->next=NULL;
}

/* 入栈:在头节点之后插入一个新节点 */
Push(SNode* pS,ElemType e)
{
  SNode* node;
  node = (SNode*)malloc(sizeof(SNode));
  node->elem = e;
  node->next = pS->next;
  pS->next = node;
}

int Pop(SNode* pS,ElemType* pe)
{
  SNode* node;

  if (pS->next==NULL){
    return 0;
  }
  *pe = pS->next->elem;

  node=pS->next;
  pS->next=node->next;
  free(node);
  return 1;
  
}

main()
{
  SNode S;
  ElemType e;
  int N;

  InitStack(&S);
  N=1348;

  while(N){
    e = N % 8;
    Push(&S,e);
    N = N/8;
  }

  while(Pop(&S,&e)){
    printf("%d",e);
  }

  getch();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?