栈
#include<stdlib.h>
#include<stdio.h>
typedef struct STACK
{
int *date;
int length;
} stack;
int initstack(stack *h)
{
h->date=(int *)malloc(0*sizeof(int ));
if(NULL==h) exit(-1);
h->length=0;
return 1;
}
int crestack(stack *h,int n)
{
int *p;
printf("输入数据:");
for(p=h->date;p<h->date+n;p++)
scanf("%d",p);
h->length=n;
return 1;
}
int intsertstack(stack *h,int weizhi ,int shuju)
{
if(weizhi<1||weizhi>h->length+1)
{
printf("位置错误!");
return 0;
}
int *p;
for(p=h->date+h->length-1;p>=h->date+weizhi-1;p--)
*(p+1)=*p;
*(h->date+weizhi-1)=shuju;
h->length++;
return 1;
}
void show(stack *h)
{
int *p;
printf("结果为:");
for(p=h->date;p<h->date+h->length;p++)
printf("%d ",*p);
printf("\n");
}
int main()
{
stack k;
initstack(&k);
int n;
printf("输入元素个数:");
scanf("%d",&n);
crestack(&k,n);
show(&k);
printf("输入要插入的位置和元素:");
int a,b;
scanf("%d%d",&a,&b);
intsertstack(&k,a,b);
show(&k);
}