#include<stdio.h>
#include<stdlib.h>
typedef struct car
{
int id;
char color[20];
}CAR;
typedef struct node
{
CAR data;
struct node *next;
}NODE;
main()
{
NODE *top; //定义栈顶指针
//初始化
top=NULL;
//加入节点,入栈
NODE *p; //定义指针
p=(NODE *)malloc(sizeof(NODE)); //分配空间
p->data.id=12345; //赋值
p->next=NULL;
NODE *q;
q=(NODE *)malloc(sizeof(NODE));
q->data.id=23456;
q->next=NULL;
NODE *s;
s=(NODE *)malloc(sizeof(NODE));
s->data.id=34567;
s->next=NULL;
p->next=top;
top=p;
q->next=top;
top=q;
s->next=top;
top=s;
//输出
NODE *t;
t=top;
while(t!=NULL)
{
printf("%d\n",t->data.id);
t=t->next;
}
//删除
NODE *tmp;
tmp=top;
top=top->next;
free(tmp); //释放内存
//输出
NODE *t1;
t1=top;
printf("删除\n");
while(t1!=NULL)
{
printf("%d\n",t1->data.id);
t1=t1->next;
}
}
//现要求对上面的代码改为在函数中实现
//下面的是我修改的,出现的语法错误,本人刚入门,请大神指点一二,万分感激
#include<stdio.h>
#include<stdlib.h>
typedef struct car
{
int id;
char color[20];
}CAR;
typedef struct node
{
CAR data;
struct node *next;
}NODE;
void initLinkStack(NODE *top)
{
top=NULL;
}
void insertLinkStack(NODE *top,CAR newCar)
{
NODE *node;
node=(NODE *)malloc(sizeof(NODE)); //分配空间
node->data=newCar; //赋值
node->next=top; //新节点指向堆栈的顶端
top=node; //新节点成为桟的顶端
}
void outPutLinkStack(NODE *top)
{
NODE *t;
t=top;
while(t!=NULL)
{
printf("车牌:%d ,颜色:%s\n",t->data.id,t->data.color);
t=t->next;
}
}
void deleteLinkStack(NODE *top)
{
NODE *tmp;
tmp=top;
top=top->next;
free(tmp); //释放内存
}
main()
{
CAR C1={123456,"black"};
CAR C2={234567,"blue"};
CAR C3={345678,"red"};
NODE top; //定义栈顶指针
initLinkStack(&top);
//增加元素
printf("依次增加桟元素:\n");
insertLinkStack(&top,C1);
insertLinkStack(&top,C2);
insertLinkStack(&top,C3);
//输出元素
outPutLinkStack(&top);
//删除元素
printf("删除栈顶元素:\n");
deleteLinkStack(&top);
//输出元素
outPutLinkStack(&top);
}