栈和队列的类型

一,栈
1,栈的特征
1》数据特征
    线性结构: 有一个栈顶,有一个栈底,中间每一个数据有且仅有一个直接前驱和直接后继。
2》操作特征
    只允许在一端插入和删除数据,把这一端称为栈顶,另一端称为栈底。插入称为入栈,删除称为出栈。
    (栈是一种特殊的线性表)总结:"后进先出"。
2,栈的顺序存储结构(顺序栈

2.1 顺序栈的结构

#ifndef __SEQSTACK_H__
#define __SEQSTACK_H__

#define SIZE  10

typedef struct seqstack{
    datatype data[SIZE];
    int top;
}seq_stack,*seq_pstack;


#endif
3,栈的链式存储结构(链栈)
3.1 链栈结点类型
typedef int datatype;

typedef struct linkstacknode{
    datatype data;
    struct linkstacknode *next;

}linkstack_node,*linkstack_pnode;
二,队列
1,队列的特征
1》数据特征
    线性结构:有一个队头,有一个队尾,中间每一个数据有且仅有一个直接前驱和直接后继。
2》操作特征
    只允许在一端插入,在另一端删除,把插入这端称为队尾,删除端称为队头,插入称为入队,删除称为出队。
    (特殊的线性表:先进先出)
2,队列的顺序存储(循环队列)
2.1 队列类型
#ifndef __SEQQUEUE_H__
#define __SEQQUEUE_H__

#define SIZE 10

typedef struct seqqueue{
    datatype data[SIZE];
    int front,rear;
}seq_queue,*seq_pqueue;


#endif
3,队列的链式存储(链式队列)
3.1 链式队列结点类型
typedef int datatype;

typedef struct queuenode{
    datatype data;
    struct queuenode * next;
}queue_node,*queue_pnode;


typedef struct linkqueue{
    queue_pnode front,rear;
}link_queue,*link_pqueue;
3.2入队操作
new->next=rear->next;
rear->next=new;
rear=rear->next;
3.3出队操作
t=front;           //定义一个变量t保存队头
front=front->next;
free(t);
front->data 出队;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值