用链表实现栈,完成了出栈入栈功能。

  #include"stdio.h"
typedef int element; //define a struct descirbe a stack used by linklist
typedef struct Stack_linklist{
element data;
struct Stack_linklist *next;
}*Stack; //define a struct desribe a stack top number
typedef struct Stack_top{
element top;
}*Top;
element pop(Stack pStack,Top pTop)
{
Stack P,K;
K=pStack->next;
printf("pop data:%d\n",pStack->next->data);
pStack->next=pStack->next->next;
free(K);
printf("pop position:%d\n",pTop->top);
--pTop->top;
} element Init(Stack *p_Stack,element num,Top pTop)
{
pTop->top=-;
Stack P,pStack;
pStack=*p_Stack;
int i=;
if(num<)
{
printf("please input right number\n");
}
for(;i<num;i++)
{
P=(Stack)malloc(sizeof(struct Stack_linklist));
pStack->next=P;
pStack=pStack->next;
pTop->top++;
pStack->data=i;
printf("pStack->data:%d\n",pStack->data);
}
pStack->next=NULL;
return ;
}
element push(Stack *pStack,element num,Top pTop)
{
Stack P,k,M;
M=(Stack)malloc(sizeof(struct Stack_linklist));
P=*pStack;
k=P->next;
P->next=M;
M->next=k;
M->data=num;
pTop->top++;
printf("push position:%d data:%d\n",pTop->top,M->data);
}
element Print(Stack pStack)
{
Stack P;
P=pStack->next;
while(P)
{
printf("data:%d\n",P->data);
P=P->next;
}
}
element main()
{
Stack P;
Top pTop;
pTop=(Top)malloc(sizeof(struct Stack_top));
P=(Stack)malloc(sizeof(struct Stack_linklist));
P->next=NULL;
Init(&P,,pTop);
Print(P);
push(&P,,pTop);
push(&P,,pTop);
push(&P,,pTop);
push(&P,,pTop);
push(&P,,pTop);
Print(P);
pop(P,pTop);
pop(P,pTop);
Print(P);
}

c语言编程之栈(链表实现)的更多相关文章

  1. C语言编程学习:链表的来源分析

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  2. c语言编程之栈(数组实现)

    用数组实现的顺序栈,完成了出栈入栈功能. #include"stdio.h" typedef int element; #define max 100 typedef struct ...

  3. c语言编程之队列(链表实现)

    用链表实现了队列,完成了队列的入队和出队功能. #include"stdio.h" typedef int element; typedef struct Node{ struct ...

  4. C语言 复杂的栈(链表栈)

    //复杂的栈--链表栈 #include<stdio.h> #include<stdlib.h> #define datatype int//定义链表栈数据类型 //定义链表栈 ...

  5. 如何轻松使用 C 语言实现一个栈?​

    什么是数据结构? 数据结构是什么?要了解数据结构,我们要先明白数据和结构,数据就是一些int char 这样的变量,这些就是数据,如果你是一个篮球爱好者,那么你的球鞋就是你的数据,结构就是怎么把这些数 ...

  6. 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域

    [源码下载] 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 动态分配内存 链 ...

  7. 混合语言编程:启用CLR(公共语言运行时编译)让C#调用C++

    前言 关于混合C#和C++的编程方式,本人之前写过一篇博客(参见混合语言编程:C#使用原生的Directx和OpenGL),在之前的博客中,介绍了在C#的Winform和WPF下使用原生的Direct ...

  8. 第二章 C语言编程实践

    上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...

  9. 华为C语言编程规范

    DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...

随机推荐

  1. 日历控件table布局

    作为初学者,一开始就接触div+css ,所以说实话,我并不怎么喜欢table布局,一般逃避. 先上这次的效果图: 看到这个图,第一次用table布局没实现,原因是给tr加下边框失效.当时没找到原因, ...

  2. C#去掉周六周日的算法

    /// <summary> /// 用来获取工作日(不含周六周日) /// </summary> /// <param name="dtSub"> ...

  3. DateDiff函数 asp运算时间

    DateDiff DateDiff函数 返回 返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目. 语法 DateDiff(interval, date1, date2[, f ...

  4. 动态调用webservice时 ServiceDescriptionImporter类在vs2010无法引用的解决方法

    [导读]ServiceDescriptionImporter是创建Web Service 时使用的类,它是引用继承System.Web.Services 当我将VS2005里写的一段代码放在VS201 ...

  5. hidden(隐藏域)

    <input type="hidden">? 这等于是隐藏值,客户端无需显示,但提交后后台能够接受,例如你放个表单验证值在里边,这样可以拒绝来源不明的表单提交.还有判断 ...

  6. English Learning

    EnglishPod 百度云盘:http://pan.baidu.com/s/1eQUJquA

  7. AnyCAD脚本模型

    采用AnyCAD建立的模型, 基于AnyCAD.Net SDK在C#中展示模型:

  8. Windows Phone 7 中拷贝文件到独立存储

    private void CopyToIsolatedStorage(){    using (IsolatedStorageFile storage = IsolatedStorageFile.Ge ...

  9. <Linux系统hostname命令详解>

    hostname命令的用法的小知识我们都知道hostname命令是查看主机名和修改主机名的. [root@apache ~]# hostname  //查看本机的主机名apache.example.c ...

  10. 【Qt】Qt Assistant介绍【转】

    简介 Qt Assistant也就是我们常说的Qt助手,是一款用于呈现在线文档的工具. 简介 一分钟学会使用 Qt参考文档 Qt Assistant详解 命令行选项 工具窗口 文档窗口 工具栏 菜单 ...