#include<stdio.h>
#include<malloc.h>
typedef struct stnode
{
int data;
struct stnode *next;
}LinkStack;
LinkStack *ls=NULL;
void push(LinkStack *ls,int &x)
{
LinkStack *p;
p=(LinkStack *)malloc(sizeof(LinkStack));
p->data=x;
p->next=ls;
ls=p;
}
int Pop(LinkStack *ls,int &y)
{
LinkStack *p;
if (ls==NULL)
return 0;
else
{
p=ls;
y=p->data;
ls=ls->next;
free(p);
return 1;
}
}
void print()
{
LinkStack *p;
p=ls;
printf("print the stack\n");
while(p)
{
scanf("%d",&p->data);
printf("%d",p->data);
p=ls->next;
}
printf("\n");
}
void main ()
{
int n,i,x,y;
printf("input n:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("input a number:\n");
scanf("%d",&x);
push(ls,x);
}
print();
printf("Pop the top element: %d\n",Pop(ls,y));
print();
}
运行结果为啥这样啊??
急!用c语言实现链栈的操作
⑷出栈\/*删除链栈top的栈顶结点*\/ int PopLinkStack (LinkStack* & s, ElemType &x){ LinkStack *p;if(s==NULL) return 0;x = s->data; \/*将栈顶数据存入*x *\/ p = s; \/*保存栈顶结点地址*\/ s = s->next; \/*删除原栈顶结点*\/ free (p); \/*释放原栈顶结点*\/ return ...
数据结构定义一个栈并实现入栈和出栈操作的程序c语言完整版
常用数据结构:数组 (Array)、栈 (Stack)、队列 (Queue)、链表 (Linked List)、树 (Tree)、图 (Graph)、堆 (Heap)、散列表 (Hash)
用C语言怎么写输出栈中元素,并打印栈中元素
可以直接用输出在函数内部调用时,把调用顺序打印出来。一、一个由C\/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束...
跪求C语言链表程序,稍做修改的,鄙视网上直接拷 的!!!邮箱807599078@qq.c...
从自己U盘里复制到。。。不鄙视吧。。include <stdio.h> include <stdlib.h> include <string.h> pragma pack(1)typedef struct data { char addr[50];char name[30];long teleno;struct data *next;}* L,N;pragma pack()L load(const char *dir){ FILE *pfile = fopen(dir,"rb");i...
C语言计算程序
然后依次扫描符号,数字就直接进栈,遇到运算符就将前两个数字出栈、运算后结果再进栈:例如5 3 2 + *扫描5——>5扫描3——>5 3扫描2——>5 3 2扫描+——>5 5扫描*——>25 所以你现在要解决的问题是如何将中缀表达式转化成后缀表达式。这个依然是通过栈来实现。从左到右扫描,遇到数字直接...
求计算机C语言中“栈”的基本概念,希望各个方面都有,全一点。最好和教 ...
插入一般称为进栈(PUSH),删除则称为退栈(POP)。 栈也称为先进后出表。 栈可以用来在函数调用的时候存储断点,做递归时要用到栈! 以上定义是在经典计算机科学中的解释。 在计算机系统中,栈则是一个具有以上属性的动态内存区域。程序可以将数据压入栈中,也可以将数据从栈顶弹出。在i386机器中...
c语言编程!求大神帮忙,采纳后会加追加20分~~小妹在此谢过了
(())注释 "",''字符串 ()改变优先级 ;语句结束 注释 、。。。主要就是配对判断,也不算很难。以()为例,找到一个'('就入栈,找到一个')'就出栈,如果在‘;’前刚好出栈完毕,说明正确,如果遇到;后还有'('说明缺失‘)’,如果遇到;还有')'说明少了'('。栈用链表进行存储(新增加的节...
c++链表栈问题
顺序存储通常的实现是数组,有个小问题就是这货是有限连续分配,不适合变长栈。3.我们要增加隐含的辅助方法:存储区管理相关——初始化存储区、清理存储区等方法。必要时还应加入错误处理方法。4.方法访问存储区的实现:用什么方式在方法中获得存储区中特定位置的数据。比如顺序存储区:加上一个指向栈顶...
求助~~c语言做超大整数的加减,用栈实现
include <string.h> include <ctype.h> define M 40 \/*定义堆栈*\/ typedef struct{ double data[M];int top;}Stack;\/*初始化堆栈*\/ InitStack(Stack *s){ s->top=0;} \/*判断栈是否为空*\/ int StEmpty(Stack *s){ if(s->top==0){ return 1;} else { return 0;} } \/*入栈...
试用C语言设计一个程序,程序的功能是接收任意输入一个算术表达式,判断...
return false;}else{p[++top]=value;return true;}}bool Pop(int &value) \/\/读取栈顶元素的值并删除{if(top==-1){cout<<"栈为空,不能进行删除操作"<<endl;return false;}else{value=p[top--];return true;}}bool Top(int &value) \/\/读取栈顶元素的值并不删除{if(top==-...