#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{ int n;
struct Node *next;
}Node;
int Init(Node **h)
{ if((*h=(Node *)malloc(sizeof(Node)))==NULL) return 0;
(*h)->next=NULL;
return 1;
}
void Creat(Node *h)//头插法
{ h->next=NULL;
Node *p;
int a[100];
int i,j;
printf("请输入结点的个数:");
scanf("%d",&i);
for(j=0;j<i;j++)
{ printf("请输入第%d个结点的值:",j+1);
scanf("%d",&a[j]);
}
for(j=0;j<i;j++)
{ p=(Node *)malloc(sizeof(Node));
p->n=a[j];
p->next=h->next;
h->next=p;
}
}
void Pop(Node *h,int *x)//出栈
{ Node *p=h->next;
h->next=p->next;
*x=p->n;
free(p);
}
void Push(Node *h,int x)//入栈
{ Node *p;
p=(Node *)malloc(sizeof(Node));
p->n=x;
p->next=h->next;
h->next=p;
}
void print(Node *h)//输出
{ Node *p=h->next;
while(p!=NULL)
{ printf("%d\n",p->n);
p=p->next;
}
}
void main()
{ Node *head;
int x=7,y;
Init(&head);
Creat(head);
Push(head,x);
printf("入栈后的值为%d\n",head->next->n);
Pop(head,&y);
printf("出栈后的值为%d\n",head->next->n);
print(head);
}
单链表栈的相关操作
最新推荐文章于 2023-08-11 23:57:33 发布