#include <stdio.h>
#include <malloc.h>
#include <intrin.h>
typedef struct Node
{
int data;
struct Node *next;
}*lstack;
//创建
lstack create()
{
lstack s=(lstack)malloc(sizeof (struct Node));
if(s==NULL)
{
return NULL;
}
s->data=0;
s->next=NULL;
return s;
}
//插入(头插)
lstack insert(lstack L,int element)
{
lstack s=create();
if(L==NULL)
{
s->data=element;
L=s;
} else
{
s->next=L->next;
s->data=L->data;
L->next=s;
L->data=element;
}
}
//输出
void output(lstack L)
{
if(L==NULL)
{
return;
} else
{
lstack p=L;
while(p!=NULL)
{
printf("%d\t",p->data);
p=p->next;
}
}
puts("");
}
//删除(尾删)
lstack delete(lstack L)
{
if(L==NULL)
{
puts("stack is NULL");
return NULL;
} else if(L->next==NULL)
{
printf("delete element:%d\n",L->data);
free(L);
L=NULL;
} else
{
lstack p=L->next;
printf("delete element:%d\n",L->data);
L->data=p->data;
L->next=p->next;
free(p);
p=NULL;
}
return L;
}
int main() {
lstack L=NULL;
char str[10];
int element;
do {
printf("please input element:");
scanf("%d", &element);
L= insert(L,element);
printf("whether to continue y/n:");
scanf("%s",str);
}while(strcmp(str,"n"));
puts("after insert:");
output(L);
do {
L= delete(L);
printf("whether to continue y/n:");
scanf("%s",str);
} while (strcmp(str,"n"));
puts("after delete:");
output(L);
return 0;
}
实现链栈的插入和删除
最新推荐文章于 2023-10-04 21:49:32 发布