1建立结构
#include<stdio.h>
#include <stdlib.h>
//define a struct
//定义一个结构体,也就是节点
typedef struct Node {
int data; // 存储栈内
struct Node *next; // 存储结点的地址
}LNode,*LinkList;
2打印栈内元素
LNode*List_new(LNode*L)
{ LNode*p;
p = (LNode*)malloc(sizeof(LNode));
p=L->next;//因为L是空节点所以L->next传给p
printf("栈内现在元素是\n");
do
{printf("%d ",p->data);
p=p->next;//遍历
}while(p!=NULL);}
3入栈(因为栈是先进后出,所以使用头插法进行入栈)
LNode*List_HeadCreate(LNode*L)
{ LNode*p;
int h;
int b;
L = (LNode*)malloc(sizeof(LNode));
L->next=NULL;
do{ printf("输入数据\n");
scanf("%d",&h);
p=(LNode*)malloc(sizeof(LNode));
p->data=h;
p->next=L->next;
L->next=p;
printf("是否继续录入数据0/1");
scanf("%d",&b);
if(b==0)
{ break;
}
}while(1);
return L;
}
4出栈
图解
代码解析
LNode*List_printf(LNode*L)
{ int b;
LNode*p;
LNode*node=L;
LNode*h;
do {
{p=node->next;
printf("栈顶元素%d\n",p->data);
printf("是不是要出栈0/1");
scanf("%d",&b);
if(b==0)
{
break;
}
else
{node->next=p->next;
free(p);
p=NULL;
}
}
}while(1);
return L;
}
5主函数
main(){
LNode *L;
int arr;
int h=0;
int select;
printf("----主菜单----\n");
printf( "--1入栈--\n");
printf("--2出栈--\n");
printf("--3打印栈内元素--\n");
printf("--4返回---");
do
{printf("\n写入选项");
scanf("%d",&select);
{
if(select==1) L = List_HeadCreate(L);//入栈
if(select==2) L=List_printf(L);//出栈
if(select==3) L=List_new(L);//打印栈内元素
if(select==4) {
{
printf("欢迎下次使用"); break;}}}}while(1);
}
6完整代码
#include<stdio.h>
#include <stdlib.h>
//define a struct
//定义一个结构体,也就是节点
typedef struct Node {
int data; // 存储链表数据
struct Node *next; // 存储结点的地址
}LNode,*LinkList;
LNode*List_new(LNode*L)
{ LNode*p;
p = (LNode*)malloc(sizeof(LNode));
p=L->next;
printf("栈内现在元素是\n");
do
{printf("%d ",p->data);
p=p->next;
}while(p!=NULL);}
LNode*List_HeadCreate(LNode*L)
{ LNode*p;
int h;
int b;
L = (LNode*)malloc(sizeof(LNode));
L->next=NULL;
do{ printf("输入数据\n");
scanf("%d",&h);
p=(LNode*)malloc(sizeof(LNode));
p->data=h;
p->next=L->next;
L->next=p;
printf("是否继续录入数据0/1");
scanf("%d",&b);
if(b==0)
{ break;
}
}while(1);
return L;
}
LNode*List_printf(LNode*L)
{ int b;
LNode*p;
LNode*node=L;
LNode*h;
do {
{p=node->next;
printf("栈顶元素%d\n",p->data);
printf("是不是要出栈0/1");
scanf("%d",&b);
if(b==0)
{
break;
}
else
{node->next=p->next;
free(p);
p=NULL;
}
}
}while(1);
return L;
}
main(){
LNode *L;
int arr;
int h=0;
int select;
printf("----主菜单----\n");
printf( "--1入栈--\n");
printf("--2出栈--\n");
printf("--3打印栈内元素--\n");
printf("--4返回---");
do
{printf("\n写入选项");
scanf("%d",&select);
{
if(select==1) L = List_HeadCreate(L);//入栈
if(select==2) L=List_printf(L);//出栈
if(select==3) L=List_new(L);//打印栈内元素
if(select==4) {
{
printf("欢迎下次使用"); break;}}}}while(1);
}
7运行结果
欢迎大家指出错误 哈!!!