`

C栈-链表实现

阅读更多
#include <stdio.h>
#include <stdlib.h>

typedef struct node * Elem;
struct node{
int data;
    Elem next;
};

typedef Elem  Stack;

void initial(Stack* stack){
Elem p = (Elem)malloc(sizeof(Elem));
p->next = NULL;
    *stack = p;
}

int getTop(Stack stack){
Elem p = stack->next;
if(p != NULL){
return p->data;
}else{
return NULL;
}
}

int pop(Stack stack ){
    Elem p = stack->next;
if(p != NULL){
int data = p->data;
stack->next = p->next;
// free(p);
return data;
}else{
return NULL;
}
}

void push(Stack stack , int data){
Elem p = (Elem)malloc(sizeof(Elem));
p->data=data;
p->next = stack->next;
stack->next=p;
}

int getLength(Stack stack){
   Elem p = stack;
   int i = 0;
   while(p->next!=NULL){
   p=p->next;
   i++;
   }
   return i;
}

void iteratorElem(Stack stack){
Elem p = stack->next;
printf("\n===============================================\n");
int i = 1;
while(p!= NULL){
printf("%d----->%d   \t",i,p->data);
p=p->next;
i++;
}
printf("\n===============================================\n");
}
void main(){
Stack stack=NULL;
initial(&stack);
int num = 0;
for(int i =0;i<8;i++){
scanf("%d",&num);
push(stack,num);
}
     iteratorElem(stack);
printf("Stack top elem: %d\n",getTop(stack));
printf("Stack elem length: %d\n",getLength(stack));
for(i =0;i<8;i++){
pop(stack);
iteratorElem(stack);

}
}
分享到:
评论
1 楼 sai901013 2011-04-01  
謝謝 交作業.

相关推荐

    栈的实现(C语言)数组实现以及链表实现

    栈的实现(C语言)数组实现以及链表实现源码,以及各个功能测试代码函数等 和后缀式转前缀式的用例

    C语言栈(链表)

    用函数或过程的方法设计、实现一个抽象数据类型栈或队列,包括栈或队列的基本运算操作,使得以后对栈或队列中的数据的访问,可以通过调用函数或过程来完成。

    栈关于数组与链表的实现

    通过阅读和理解提供的压缩包文件"stack",我们可以预期其中包含的源代码展示了如何用C语言分别使用数组和链表实现栈的全部功能。这些源码可以作为学习和理解栈实现的实例,帮助我们更好地掌握这两种数据结构在实际...

    栈的链表实现与测试代码(C语言)

    在链表实现中,`Push`操作需要创建新的节点,设置其数据值,并将其链接到当前栈顶。`Pop`操作则需删除栈顶节点,通常通过保存栈顶节点的前一个节点来实现,这样可以避免直接删除栈顶元素导致栈顶指针丢失。`Peek`、`...

    c++算法集-排序-链表-图-队列-二叉树实现

    "c++算法集-排序-链表-图-队列-二叉树实现"这个压缩包包含了C++语言实现的一些核心数据结构和算法,这些都是计算机科学的基础。 首先,我们来详细探讨排序算法。排序是计算机科学中最基本的操作之一,它涉及将一组...

    栈链表_c语言/栈链表_

    在C语言中,我们可以通过链表来实现栈的功能,这就是所谓的“栈链表”。在这个主题下,我们将深入探讨栈链表的概念、设计以及在C语言中的实现。 栈链表的核心是链表节点,每个节点包含一个数据元素和指向下一个节点...

    有用的C语言源代码-二叉树-链表-数组等

    这里可能包括单链表、双向链表、循环链表等不同类型的链表实现,以及链表的基本操作,如插入、删除、查找等。链表的理解和操作是数据结构学习的基础。 接着是"二叉树"。二叉树是最简单但又非常重要的非线性数据结构...

    链表实现栈和队列(经典程序)

    在"delimetermach.cpp"这个源代码文件中,很可能包含了具体的链表实现栈和队列的C++代码。通过阅读和分析这段代码,我们可以深入理解如何使用C++的指针和结构体来构建链表节点,以及如何通过指针操作来实现栈的压栈...

    栈链表_c语言栈链表_源码.zip

    以下是一个简单的C语言栈链表实现: ```c #include #include typedef struct Node { int data; struct Node* next; } Node; Node* CreateStack() { Node* head = (Node*)malloc(sizeof(Node)); head-&gt;next ...

    个人C语言学习实录练习题-链表.数据结构.快速排序练习.rar

    在C语言中,实现链表通常涉及以下步骤: 1. 定义节点结构:创建一个结构体,包含数据部分和指向下一个节点的指针。 2. 初始化链表:创建头节点,并将其指针设置为NULL,表示空链表。 3. 插入节点:在链表的头部、...

    c语言栈源码<链表实现>

    详细注释了代码实现步骤 /************************************************************************* &gt; File Name: lstack.c &gt; Author: Gnglas &gt; Mail: 2254228017@qq.com &gt; Created Time: 2020年01月...

    个人C语言学习实录练习题-链表.数据结构.快速排序等.zip

    链表的应用广泛,如实现队列、栈、哈希表等数据结构,以及解决各种算法问题,如LRU缓存淘汰策略等。 二、快速排序 快速排序是一种高效的排序算法,由C.A.R. Hoare在1960年提出。它的主要思想是分治法,通过选取一个...

    shujujiegou.rar_c 数据结构_数据结构_栈_链表 实现_顺序表

    在这个"shujujiegou.rar_c 数据结构_数据结构_栈_链表 实现_顺序表"压缩包中,包含了C语言实现的数据结构相关的源代码,主要关注的是顺序表、链表和栈这三种基本数据结构。下面我们将逐一探讨这些数据结构及其基本...

    栈:顺序栈和链表栈_C语言项目

    本文将深入探讨一种常用的数据结构——栈,特别是顺序栈和链表栈,它们都是实现栈功能的不同方式。栈通常被称为“后进先出”(LIFO,Last In First Out)的数据结构,广泛应用于各种算法和程序设计中,如表达式求值...

    从尾到头打印链表(C语言实现)

    以上就是使用C语言实现从尾到头打印链表的方法,涉及到的主要知识点有链表的数据结构、链表节点的定义、链表反转的递归实现以及递归打印链表。这些概念和技能在数据结构与算法的学习中非常重要,对于理解和编写复杂...

    数据结构-链表

    在本文中,我们将深入探讨链表的概念、类型、操作以及C语言中的实现。 链表与数组的主要区别在于,它不连续存储数据。每个元素(节点)包含两部分:数据域和指针域。数据域存储实际的数据,而指针域存储指向下一个...

    基于C语言实现的链表、栈、队列、排序算法以及二叉树源码(课程作业).zip

    1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 ...基于C语言实现的链表、栈、队列、排序算法以及二叉树源码(课程作业).zip

    数据结构与算法基础课程 C语言C++程序语言设计教程 2_3线性表-链表 共43页.pptx

    本课程旨在为学生提供关于数据结构与算法的基础知识,重点介绍线性表这一重要的数据结构类型,尤其是链表的实现与应用。通过学习,学生将能够理解链表的基本概念、掌握链表的操作方法,并能够在实际编程中灵活运用...

    C语言 顺序链表 单链表 双链表 栈等程序

    本压缩包文件包含了关于C语言中数据结构实现的一些程序,具体涉及到了顺序链表、单链表和双链表以及栈的数据结构。下面我们将详细探讨这些知识点。 首先,我们来看顺序链表。顺序链表是一种线性数据结构,其元素在...

    c 栈 链表 循环链表

    理解并熟练掌握栈、链表和循环链表的概念及其在C语言中的实现,是提升编程技能的关键步骤。这些基础知识不仅在C语言编程中至关重要,也是其他高级数据结构和算法的基础。在实际编程项目中,它们常被用于优化内存使用...

Global site tag (gtag.js) - Google Analytics