c语言编程之栈(链表实现)
用链表实现栈,完成了出栈入栈功能。
#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语言编程之栈(链表实现)的更多相关文章
- C语言编程学习:链表的来源分析
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- c语言编程之栈(数组实现)
用数组实现的顺序栈,完成了出栈入栈功能. #include"stdio.h" typedef int element; #define max 100 typedef struct ...
- c语言编程之队列(链表实现)
用链表实现了队列,完成了队列的入队和出队功能. #include"stdio.h" typedef int element; typedef struct Node{ struct ...
- C语言 复杂的栈(链表栈)
//复杂的栈--链表栈 #include<stdio.h> #include<stdlib.h> #define datatype int//定义链表栈数据类型 //定义链表栈 ...
- 如何轻松使用 C 语言实现一个栈?
什么是数据结构? 数据结构是什么?要了解数据结构,我们要先明白数据和结构,数据就是一些int char 这样的变量,这些就是数据,如果你是一个篮球爱好者,那么你的球鞋就是你的数据,结构就是怎么把这些数 ...
- 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域
[源码下载] 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 动态分配内存 链 ...
- 混合语言编程:启用CLR(公共语言运行时编译)让C#调用C++
前言 关于混合C#和C++的编程方式,本人之前写过一篇博客(参见混合语言编程:C#使用原生的Directx和OpenGL),在之前的博客中,介绍了在C#的Winform和WPF下使用原生的Direct ...
- 第二章 C语言编程实践
上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...
- 华为C语言编程规范
DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...
随机推荐
- OpenShare常见问题及解答
OpenShare常见问题及回答: Q:OpenShare可以整合SAP么? A:当然可以,OpenShare是真正完全开放的产品,但要进行二次开发,事实上我们帮我们大部分的客户都整合了SAP,包括数 ...
- PHP和CS的引用传值
PHP的引用传值 function change_value($num){ $num+=2; } $age = 3; change_value(&$age); echo $age; CS的引用 ...
- 利用Form()使绘图可以不消失
1: public Form1() 2: { 3: InitializeComponent(); 4: this.Show(); 5: Graphics grp = this.CreateGraphi ...
- ubuntu安装 ibus-google输入法
1.$sudo apt-get install ibus-googlepinyin //ibus 融合了许多种输入法,google便是一种,此步就是下载安装ibus-google拼音输入法. ...
- Linux 基本命令学习笔记
1. 文件管理 Ø touch 新建文件.例: touch test.txt 新建一个test.txt 文件. Ø cp 复制文件.例:cp ./user_one/test_one ./user ...
- Linux密码更改
男孩儿的灰色 QQ:936779899 2014.2.9 1. 进入单用户模式 2. 编辑passwd文件,删除X 3. 然后保存推出并编辑shadow文件 4. 删除标色部分,其他保持不变 5. 最 ...
- log4net自定义字段写入SqlServer数据库 ASP.net
首先申明,本示例经过本作者亲自试验通过,可以运行 第一步 编写log4net配置文件 此处为Log.xml,该文件放在与Web.config平级的位置 <?xml version="1 ...
- iOS数据持久化(三)
#pragma mark - Core Data stack /** * @synthesize 关联成员变量和属性 */ @synthesize managedObjectContext = _ma ...
- PHP调用WebService
1. 环境配置 配置php.ini,把php_soap.dll前面的分号去掉, 配置完成,需要重启. 2. PHP调用代码,如下 <?php try { $soap = new SoapCl ...
- BZOJ 1631==USACO 2007== POJ 3268 Cow Party奶牛派对
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 19226 Accepted: 8775 Description One ...