对应每一章的数据结构代码4

顺序栈//取出栈顶元素top不减但是输出星top减 特点:先进后出
#include “stdio.h”
#include “stdlib.h”
#define stackinitsize 100
#define stacelncrement 10
typedef struct
{
int *top;
int *base;
int stacksize;
}spstack;
void initstack(spstack *l)
{
l->base=(int )malloc(stackinitsizesizeof(int));//放在什么类型中
if(!l->base)
printf(“false”);
l->top=l->base;//表示空间为空
l->stacksize=stackinitsize;//开辟地址
}
void push(spstack l,int n)
{
int i;
if(l->base-l->topl-> stacksize)//栈满
l->base=(int *)realloc(l->base,(l->stacksize+stacelncrement)*sizeof(int));
if(!l->base)
printf(“false”);
l->stacksize=l->stacksize+stacelncrement;
for(i=0;i<n;i++)
{
scanf("%d",l->top);
l->top++;
}
}
void output(spstack *l,int n)
{
int i;
if(l->base
l->top)
printf(“false”);
for(i=n;i>0;i–)
{
l->top–;
printf("%d",
(l->top));
}
}
void main()
{
int n=4;
spstack l;
initstack(&l);
push(&l,n);
output(&l,n);

}
线性表的应用之数值转化问题栈的删除操作l->top–把元素赋值给另一个地址
#include “stdio.h”
#include “stdlib.h”
#define stackinitsize 100
#define stacelncrement 10
typedef struct
{
int *top;
int *base;
int stacksize;
}spstack;
void initstack(spstack *l)
{
l->base=(int )malloc(stackinitsizesizeof(int));//放在什么类型中
if(!l->base)
printf(“false”);
l->top=l->base;//表示空间为空
l->stacksize=stackinitsize;//开辟地址
}
void conversion(spstack l)
{
int a,b,c,d;//a进制 b商 c开始的数 d余数
printf(“输入转换为多少进制的数”);
scanf("%d",&a);
printf(“输入要转换的数”);
scanf("%d",&c);
while(b!=0)
{
b=c/a;
d=c-(b
a);//0
c=b;//14=7
*(l->top)=d;
l->top++;
}
}
void output(spstack l)
{
if(l->base==l->top)
printf(“false”);
while(l->top!=l->base)
{
l->top–;
printf("%d",
(l->top));
}
}
void main()
{
spstack l;
initstack(&l);
conversion(&l);
output(&l);
}
循环队类比顺序表 特点:先进先出 循环要求加一有改变
#include “stdio.h”
#include “stdlib.h”
#define maxsize 100
typedef struct
{
int base;//基地址
int front;//头
int real;//尾,有多少元素
}squeue;
void initququ(squeue l)
{
l->base=(int
)malloc(maxsize
sizeof(int));
if(!l->base)
printf(“1”);
l->front=l->real=0;//判空
}
void ququempty(squeue *l)
{
if(!l->frontl->real)//判空
printf(“不空”);
else
printf(“空”);
}
void ququfull(squeue *l)
{
if((l->real+1)%maxsize
l->front)//判满
printf(“队满”);
else
printf(“继续”);
}
void entququ(squeue *l,int n)
{
int i;
printf(“请输入%d个数”,n);
for(i=0;i<n;i++)
{
scanf("%d",&l->base[l->real]);
l->real=(l->real+1)%maxsize;
}
}
void deququ(squeue *l,int n)
{
int i;
if(l->front==l->real)
printf(“空");
for(i=0;i<n;i++)
{
printf("%d",l->base[i]);
l->front=(l->front+1)%maxsize;
}
}
void getququ(squeue *l)
{
printf("%d",l->base[l->front]);
}
void main()
{
int n=3;
squeue p;
initququ(&p);
ququempty(&p);
ququfull(&p);
entququ(&p,n);
getququ(&p);
deququ(&p,n);
}

发布了41 篇原创文章 · 获赞 1 · 访问量 1251

猜你喜欢

转载自blog.csdn.net/xiaoqiang616717/article/details/100637624