c基础(4)

1_stdcall的用法
2我改错的一到题
#include <iostream>
#include "stdlib.h"

#define SIZE 100
//创建链表用堆栈的方法倒序
using namespace std;
/*
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;

void CreatList_L(LinkList &L,int n)
{
int i;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
for(i=n;i>0;--i){
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=L->next;
L->next=p;
}
}
*/
typedef struct list
{
int num;
struct list* next;
}list;
list* head=NULL;
list* create()
{
list *p,*q;
p=(list*)malloc(sizeof(list));
printf("input a integer:/n");
scanf("%d",&(p->num));
q=p;
while(p->num!=0)
{
if(head==NULL)
{
 head=(list*)malloc(sizeof(list));//原来这里直接用head=p了,如果是这样就不能用head->next来表示链表头,而是head
 head->next=p;
}
else
{
q->next=p;
q=p;
}
p=(list*)malloc(sizeof(list));
scanf("%d",&(p->num));
}
q->next=NULL;
free(p);//这里为什么释放,是因为,最后申请的一个内存他的值为0,没有意义,所以放掉
//free(head);
return(head);
}

class stack
{
int stck[SIZE];
int top;
public:
void init(void);
void push(int i);
int pop(void);
};

void stack::init(void)
{
top=0;
}

void stack::push(int i)
{
if(top==SIZE)
{
cout<<"the stack is full~!";
return;
}
stck[top]=i;
top++;
}

int stack::pop(void)
{
if(top==0)
{
cout<<"the stack is underflow~!";
return 0;
}
top--;
return stck[top];
}

/*
void main()
{
stack stack1,stack2;
stack1.init();
stack2.init();
stack1.push(1);
stack2.push(2);
stack1.push(3);
stack2.push(4);
cout<<stack1.pop()<<" ";
cout<<stack2.pop()<<" ";
cout<<stack1.pop()<<" ";
cout<<stack2.pop()<<"/n ";
}
*/
void main()
{
int j=0;
list *point;
stack stack1;

create();
point=head->next;
stack1.init();
while(point->next!=NULL)//这里改为point==NULL 就不用再在后面加上一次了
{
stack1.push(point->num);
j++;
point=point->next;
}
//stack1.push(point->num);//这里因为先判断了,所以最后一个节点的值无法进栈,这里给它补上
//j++;
for(j;j>0;j--)
{
cout<<stack1.pop()<<endl;
}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值