第三章棧和隊列
棧是限制僅在表的一端進行插入和刪除運算的線性表又稱為後進先出表(LIFO表)
棧的順序存儲結構稱順序棧
#define stacksize
typedef char datatype;
typedef struct{
datatype data[stacksize];
int top;
}seqstack;
當棧滿時
在順序棧上的基本運算
Void initstack(seqstack *s)
{
s
}
int stackempty(seqstack *s)
{
return s
}
int stackfull(seqstack *s)
{
return s
}
Void push(seqstack *s
{
if(stackfull(s))
error(
s
}
Datatype pop(seqstack *s)
{
if(stackempty(s))
error(
return S
}
Dtatatype stacktop(seqstack *s)
{
if(stackempty(s))
error(
return S
}
棧的鏈式存儲結構稱鏈棧
typedef struct stacknode{
datatype data;
struct stacknode *next;
}stacknode;
typedef struct{
stacknode *top;
}linkstack;
鏈棧上的基本運算
Void initstack(linkstack *s)
{
s
}
Int stackempty (linkstack *s)
{
return s
}
Void push(linkstack *s
{
stacknode *p=(stacknode *)malloc(sizeof(stacknode));
p
p
s
}
Datatype pop(linksatck *s)
{
datatype x;
stacknode *p=s
if(stackempty(s))
error(
x=p
s
free(p);
return x;
}
Datatype stacktop(linkstack *s)
{
if(stackempty(s))
error(
return s
}
隊列是一種運算受限的線性表
隊列的基本運算
隊列的順序存儲結構稱順序隊列
為克服
循環隊列的邊界條件處理
循環隊列的類型定義
#define queuesize
typedef char datatype;
typedef struct{
int front;
int rear;
int count;
datatype data[queuesize];
}cirqueue;
Void initqueue(cirqueue *q)
{
q
q
}
Int queueempty(cirqueue *q)
{
return q
}
Int queuefull(cirqueue *q)
{
return q
}
Void enqueue(cirqueue *q
{
if(queuefull(q))
error(
q
q
q
}
Datatype dequeue(cirqueue *q)
{
datatype temp;
if(queueempty(q))
error(
temp=q
q
q
return temp;
}
Datatype queuefront(cirqueue *q)
{
if(queueempty(q))
error(
return q
}
隊列的鏈式存儲結構稱鏈隊列
鏈隊列的定義
typedef struct queuenode
{
datatype data;
struct queue *next;
}queuenode;
typedef struct
{
queuenode *front;
queuenode *rear;
}linkqueue;
Void initqueue(linkqueue *q)
{
q
}
Int queueempty(linkqueue *q)
{
return q
}
Void enqueue(linkqueue *q
{
queuenode *p=(queuenode *)malloc(sizeof(queuenode));
p
p
if(queueempty(q))
q
else{
q
q
}
}
Datatype dequeue(linkqueue *q)
{
datatype x;
queuenode *p;
if(queueempty(q))
error(
p=q
x=p
q
if(q
free(p);
return x;
}
Datatype queuefront(linkqueue *q)
{
if(queueempty(q))
error(
return q
}
附二:
第三章 棧和隊列
*************************************************************************************
棧(Stack)是僅限制在表的一端進行插入和刪除運算的線性表
*************************************************************************************
棧的基
From:http://tw.wingwit.com/Article/program/sjjg/201311/23754.html