69,382
社区成员
发帖
与我相关
我的任务
分享
void push(int item)
{
Node *s=new Node;
s->data=item;
s->next=head;
head=s;
}
int pop()
{
Node *s=head;
head=head->next;
return s->data;
}
#include <stdio.h>
#include <malloc.h>
typedef struct STACK
{
int data;
struct STACK *next;
}Stack;
//初始化
void InitStack(Stack *&s)
{
s=(Stack *)malloc(sizeof(Stack));
s->next=NULL;
}
//释放栈
void ClearStack(Stack *s)
{
Stack *p=s->next;
while(p!=NULL)
{
free(s);
s=p;
p=p->next;
}
}
//判断栈是否为空
int StackEmpty(Stack *s)
{
return(s->next==NULL);
}
int length(Stack *s)
{
int i=0;
Stack *p;
p=s->next;
while(p!=NULL)
{
i++;
p=p->next;
}
return i;
}
//得到栈顶元素
int GetTop(Stack *S,int &e)
{
if(S->next==NULL)
return 0;
e=S->next->data;
return 1;
}
//入栈
void Push(Stack *s,int e)
{
Stack *p;
p=(Stack *)malloc(sizeof(Stack));
p->data=e;
p->next=s->next;
s->next=p;
}
//出栈
int Pop(Stack *s,int &e)
{
Stack *p;
if(s->next==NULL)
{
printf("空栈...\n");
return 0;
}
p=s->next;
e=p->data;
s->next=p->next;
free(p);
return 1;
}
//输出栈的元素
void OutputStack(Stack *s)
{
Stack *p;
p=s->next;
if(s->next==NULL) {
printf("空栈...\n");
return;
}
while(p!=NULL) {
printf("%4d",p->data);
p=p->next;
}
printf("\n");
}
int main()
{
int e;
Stack *s;
printf("初始化栈:\n");
InitStack(s);
printf("依次进栈元素1,2,3,4,5\n");
Push(s,1);
Push(s,2);
Push(s,3);
Push(s,4);
Push(s,5);
printf("栈为%s\n",(StackEmpty(s)?"空":"非空"));
printf("栈的长度:%d\n",length(s));
printf("从栈顶到栈底的元素:");
OutputStack(s);
printf("出栈序列:");
while(!StackEmpty(s))
{
Pop(s,e);
printf("%d",e);
}
ClearStack(s);
system("pause");
}
#include <iostream>
using namespace std;
struct Node{
int data;
struct Node *next;
};
class Number{
public:
Number()
{
head=new Node;
}
void push(int x)
{
Node *s=new Node;
s->data = x;
if(NULL == head)
{
s->next=NULL;
head=s;
}
else
{
s->next=head;
head=s;
}
}
int pop()
{
Node *s = head;
head = s->next;
return s->data;
}
~Number()
{
delete head;
}
private:
Node *head;
};
void main( void )
{
Number data;
data.push(12);
data.push(2);
data.push(123);
data.push(152);
cout<<data.pop()<<" "<<endl;
cout<<data.pop()<<" "<<endl;
cout<<data.pop()<<" "<<endl;
cout<<data.pop()<<" "<<endl;
}