数据结构之栈与队列

//顺序栈存储结构
#define Stack_Size 50
typedef struct{
	type elem[Stack_Size];
	int top;//栈顶元素的下标 
}Stack; 
//顺序栈初始化
void InitStack(Stack *S){
	S->top=-1;
} 
//顺序进栈
int Push(Stack *S,Type x)
{
	//判满 
	if(S->top==Stack_Size-1) return(FLASE);
	S->tp++;
	S->elem[S->top]=x;
	return (TRUE);
} 
//顺序栈出栈
int pop(Stack *S,Type *x){
	//栈顶元素弹出, x带出
	//判空 
	if(S->top==-1) return(FLASE);
	*x=S->elem[S->top];
	S->top--;
	return (TURE); 
}
//链栈存储结构
typedef struct node{
	Type data;
	struct node *next;
}Node,*List; 
//链栈进栈 
void InitList(List L){
	top=L;
	top->next==NULL;
}
int push(List *L,Type x){
	//申请新的空间
	List *t;
	t=(List *)malloc(sizeof(Node));
	if(t==NULL)return(FLASE);//申请空间失败
	t->data=x;
	t->next=top->next;
	top->next=t;
	return(TURE); 
}
//链栈出栈 
int pop(List L,Type *x){
	List t;
	t=top->next;
	//判空 
	if(t==NULL)return(FLASE);
	 top->next=t;//要删除的点 
	 *x=t->data;//指针x带出
	 free(t);//释放指针
	 return (TRUE); 
}
/*算法3.17 链队列插入算法
将数据元素X插入到队列中Q 
*/
int EnterQueue(LinkQueue *Q,QueueElementType x){
	LinkQueueNode * NewNode;
	NewNode=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
	if(NewNode!=NULL){
		NewNode->data=x;
		NewNode->next=NULL;
		Q->rear->next=NewNode;//原尾指针 
		Q->rear=NewNode;//修改尾指针 
		return (TRUE);
	}
	else return(FALSE);
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Clark-dj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值