`

栈的基本操作算法实现(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 pBottom;
}STACK, * PSTACK;

//声明操作函数
void init(PSTACK);//初始化栈
void push(PSTACK,int); //压栈
bool pop(PSTACK ,int *);//出栈
void traverse(PSTACK);//遍历栈
void clear(PSTACK ps);//清空栈


int main(void)
{
   STACK s;
   int val;

   init(&s);
   push(&s,1); 
   push(&s,2); 
   push(&s,3); 
   traverse(&s);

   pop(&s,&val);

   printf("%d\n",val);
   traverse(&s);
}

//初始化栈
void init(PSTACK ps)
{
  ps->pTop=(PNODE)malloc(sizeof(NODE));

  if(ps->pTop==NULL)
  {
	  printf("动态内存分配失败");
	  exit(-1);
  }
  ps->pBottom=ps->pTop;
  ps->pBottom->pNext=NULL;
}

//压栈
void push(PSTACK ps,int val)
{
  PNODE p=(PNODE)malloc(sizeof(NODE));
  p->data=val;
  p->pNext=ps->pTop;

  ps->pTop=p;
  return ;
}

//遍历栈
void traverse(PSTACK ps)
{
	PNODE p=ps->pTop;
   while(p!=ps->pBottom)
   {
     printf("%d  ",p->data);
	 p=p->pNext;
   }
   printf("\n");
   return;
}

//出栈,不需要返回值,因为直接操作存数据的变量的地址
bool pop(PSTACK ps ,int * val)
{
  if(ps->pBottom!=ps->pTop)
  {
     PNODE p=ps->pTop;
	 *val =p->data;
	 ps->pTop=p->pNext;
	 free(p);
	 p=NULL;

	 return true;
  }
  else
	  return false;
}

//清空栈
void clear(PSTACK ps)
{
	//定义一个临时指针q
  PNODE p=ps->pTop , q=NULL;
  
  while(p!=ps->pBottom)
  {
     q=p->pNext;
	 free(p);
	 p=q;
    
  }

  ps->pTop=ps->pBottom;
}


分享到:
评论

相关推荐

    算法:C语言实现(第1~4部分)源代码

    这个压缩包“算法:C语言实现(第1~4部分)源代码”显然包含了使用C语言编写的算法实现,可能是针对数据结构(Data Structures)的基础知识,以及一些基础到进阶的算法。 首先,我们可以从"DS_C"这个压缩包子文件的...

    1.3《妙趣横生的算法(C语言实现 第2版)》.rar

    通过《妙趣横生的算法(C语言实现 第2版)》这本书,初学者可以系统地学习和掌握算法的基本知识,并通过C语言实践提升编程能力。书中的每个算法都会配以详细的解释和实例,有助于读者理解和应用。此外,第二版可能还...

    数据结构C语言实现栈和队列的基本操作

    栈的基本操作包括: 1. 初始化:创建一个新的空栈,通常通过分配一定大小的内存空间并设置栈顶指针为-1或0来完成。 2. 压栈(Push):将新元素添加到栈顶,需要检查栈是否已满,若未满则移动栈顶指针并将新元素存入...

    算法:C语言实现 第3版(第1~5部分 中英文)

    2. **基本数据结构**:介绍了数组、链表、栈和队列等基础数据结构的定义、操作和实现。 **第二部分:排序** 这一部分详细阐述了各种排序算法,包括: 1. **简单排序**:如冒泡排序、选择排序、插入排序和希尔排序的...

    算法:C语言实现大全(1-5部分都有)

    《算法:C语言实现大全》是一本针对计算机科学与技术领域的经典教材,涵盖了算法分析、数据结构、搜索排序以及图算法等核心主题。这本教材的特别之处在于它完全使用C语言来阐述各种算法,使得读者能够更好地理解和...

    数据结构算法实现 C语言源代码

    3. **栈和队列**:可能包含栈和队列的基本操作实现,如push、pop、enqueue、dequeue等。 4. **树结构**:可能会有二叉树的创建、遍历(前序、中序、后序)以及平衡树(如AVL树)的操作。 5. **图算法**:如...

    算法:C语言实现(第1-4部分)

    - 栈的基本操作(push、pop) - 队列的入队与出队 - 栈和队列的应用实例(如括号匹配、队列模拟等) ### 第三部分:排序算法 #### 3.1 冒泡排序 - 原理与步骤 - 时间复杂度分析 - 示例代码演示 #### 3.2 选择排序...

    严蔚敏数据结构C语言算法实现

    严蔚敏教授的《数据结构(C语言版)》是该领域的经典教材,这本书通过C语言讲解了各种数据结构的原理和操作,如线性表、栈、队列、链表、树、图等,并提供了相应的算法实现。 1. **线性表**:线性表是最基本的数据...

    c语言用栈实现计算器功能

    在C语言中实现一个计算器功能是一项基础而有趣的编程任务,它涵盖了数据结构、逻辑思维以及基本的算法设计。栈作为一种重要的数据结构,在这里扮演了关键角色。栈被称为“后进先出”(LIFO)的数据结构,即最后入栈...

    [C/算法]C语言实现数据结构各种算法

    本文将深入探讨标题和描述中提到的C语言实现的数据结构和算法,包括二叉树、表达式计算、链式表、顺序表、数组的存储、顺序栈、图的基本操作及最短路径算法,以及约瑟夫环问题。 首先,**二叉树**是一种重要的非...

    算法:算法C语言实现 第1-4部分 基础知识、数据结构、排序及搜索

    算法:C语言实现 (第1-4部分)基础知识、数据结构、排序及搜索(原书第3版) 本书是Sedgewick彻底修订和重写的C算法系列的第一本。全书分为四部分,共16章。第一部分“基础知识”(第1—2章)介绍基本算法分析原理。...

    算法C语言实现(第1~4部分)

    - **数组的基本操作**:初始化、访问、修改元素等。 - **字符串处理**:字符串的存储方式、常用字符串函数(如strlen、strcpy等)。 #### 2.2 链表 - **单链表**:节点结构、插入、删除操作。 - **双链表与循环链表**...

    c语言的各种算法实现

    C语言是一种强大的编程语言,尤其在算法实现方面表现出色。它是许多现代编程语言的基础,以其高效、简洁和灵活性而闻名。在这个"c语言的各种算法实现"主题中,我们将深入探讨C语言如何被用来构建和实现各种算法,...

    数据结构中栈的算法的C语言程序实现,很好的,可直接运行

    栈的基本操作包括压入(Push)、弹出(Pop)、查看栈顶元素(Peek或Top)以及检查栈是否为空(IsEmpty)。在C语言中,我们通常使用数组或链表来实现栈。在这个C语言程序中,可能会使用数组作为底层数据结构,因为...

    基本数据结构及算法 c语言实现

    本资源“基本数据结构及算法 c语言实现”提供了一套经典的C语言实现,帮助学习者深入理解和掌握这些核心概念。 数据结构是组织、管理和存储数据的方式,它为数据的高效访问和操作提供了便利。以下是一些常见的数据...

    算法:C语言实现(第5部分)

    数据结构是算法实现的基础,常见的数据结构如数组、链表、栈、队列、树、图等,在C语言中有不同的实现方式。例如,数组在C语言中是最基础的数据类型,适合存储固定大小的同类型元素;而链表则更适合动态变化的元素...

    算法:C语言实现第1-4部分基础知识、数据结构、排序及搜索

    例如,指针是C语言的一个重要特性,它允许我们直接操作内存地址,这在处理数据结构和算法时特别有用。 数据结构部分则深入到如何在内存中组织和管理数据。常见的数据结构包括数组、链表、栈、队列、树和图。数组是...

    利用栈的括号匹配算法 C语言数据结构

    下面将详细解释如何利用栈来实现括号匹配算法,并结合C语言进行实践。 1. **栈的基本概念** - 栈是一种线性数据结构,其操作主要集中在一端,称为栈顶。 - 栈支持两种主要操作:压入(Push)元素,将元素添加到...

    妙趣横生的算法(C语言实现)全书源码

    C语言作为底层编程语言,因其高效、简洁而被广泛用于系统级编程和算法实现。在本书中,作者通过C语言展示了各种经典算法,帮助读者从实践角度掌握这些算法的精髓。 1. **排序算法**:书中可能包含了常见的排序算法...

Global site tag (gtag.js) - Google Analytics