資料結構 棧的操作

2021-09-30 08:20:02 字數 1979 閱讀 4554

#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...