#include
#include
#define maxsize 100 /*設順序表的最大長度為100,可依具體情況分配空間*/
//#define null -1
typedef int datatype;
typedef struct
datatype stack[maxsize];
int top;/*棧頂指標*/
}seqstack;//順序棧型別定義
//構造乙個空棧
seqstack *initstack()
seqstack *s;/* s為順序棧型別變數的指標*/
s=(seqstack *)malloc(sizeof(seqstack));
if(!s)
printf("空間不足/n");
return null;
else
s->top=-1;
return s;
datatype gettop(seqstack *s)
if(s->top == -1)
printf("/n棧是空的!");
return 0;
else
return s->stack[s->top];
}//入棧
seqstack *push(seqstack *s,datatype x)
if(s->top == maxsize-1 )
printf("/n棧是滿的!");
return null;
else
s->top++;
s->stack[s->top]=x;
return s;
//出棧
datatype pop(seqstack *s)
if(s->top == -1)
printf("/n棧已經空了!");
return 0;
s->top--;
return s->stack[s->top+1];
//判別空棧
datatype seqstackempty(seqstack *s)
if(s->top ==-1)
printf("此棧是空棧!");
return 1;
else
printf("此棧不是空棧!");
return 0;
void display(seqstack *p)
int t ;
t = p->top;
if(p->top==-1)
printf("/n此棧是空的");
else
while(t!=-1)
printf("%d->",p->stack[t]);
t--;
int main()
int arr[8]=,i;
seqstack *p;
p=initstack();
//入棧
for(i=0;i<8;i++)
push(p,arr[i]);
//遍歷棧
printf("新棧的元素是: ");
display(p);
printf("/n");
//得棧頂元素
printf("棧頂元素是: ");
printf("%d",gettop(p));
printf("/n");
//判別空棧
printf("判斷是否為空棧?: ");
seqstackempty(p);
printf("/n");
//出棧
printf("出棧元素:");
printf("%d",pop(p));
printf("/n");
//出棧後的棧裡元素是:
printf("出棧後的棧裡元素是: ");
display(p);
printf("/n");
return 0;
}
資料結構 鏈棧的操作
1.malloc函式 要求返回位元組數,並且強制轉換為指標型別。2.是指標型別訪問用到的,而.是物件型別訪問得到的。3.記得count 包括 鏈棧結點的定義,鏈棧的定義,進棧,出棧。include include define maxsize 50 using namespace std typed...
資料結構 3 棧的操作
棧 stack 又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元...
(資料結構)棧操作表示
標頭檔案 include include define stack init size 100 儲存空間初始分配量 define stackincrement 10 儲存空間分配增量 typedef int selemtype typedef int status typedef struct sq...