儲存結構定義
初始化棧typedef int elemtype;
typedef enum statusstatus;
typedef struct sqstacksqstack;
判空//順序棧(基於陣列的)
status initstack(sqstack *s,int sizes) //初始化
s->top = -1;
s->size = sizes;
t = 1; //表示已經初始化
return ok;
}
status isemptystack(sqstack *s)
取得棧頂元素
清空棧status gettopstack(sqstack *s,elemtype *e) else
return ok;
}
status clearstack(sqstack *s)
銷毀棧
獲取棧深度status destroystack(sqstack *s)
free(s->elem);
t = 0; //標記棧已經不存在
return ok;
}
入棧status stacklength(sqstack *s,int *length) else
}
出棧status pushstack(sqstack *s,elemtype datas)
s->top++;
s->elem[s->top] = datas;
return ok;
}
遍歷棧//出棧,並用datas返回其值
status popstack(sqstack *s,elemtype *datas)
*datas = s->elem[s->top];
s->top--;
return ok;
}
儲存結構定義void printstack(sqstack *s)
}
初始化鏈棧typedef int elemtype;
typedef enum statusstatus;
typedef struct stacknodestacknode, *linkstackptr;
typedef struct linkstacklinkstack;
判空status initlstack(linkstack *s) //初始化
status isemptylstack(linkstack *s)
取棧頂結點
入棧status gettoplstack(linkstack *s,elemtype *e)
*e = s->top->data;
return ok;
}
出棧// 類似鍊錶的插入操作
status pushlstack(linkstack *s,elemtype datas) else
}
清空鏈棧//類似鍊錶刪除操作
status poplstack(linkstack *s,elemtype *datas) else
}
銷毀鏈棧status clearlstack(linkstack *s)
while(!isemptylstack(s))
s->count = 0;
return ok;
}
遍歷鏈棧status destorylstack(linkstack *s)
clearlstack(s); //先清空棧再釋放空間
free(s);
t = 0;
return ok;
}
void printlstack(linkstack *s)
}
棧,順序棧,鏈棧
棧作為一種限定性線性表,是將表的插入刪除限制為僅在表的一端進行,通常將表中允許插入刪除的一端叫做棧頂 top 因此棧頂的當前位置是動態變化的。棧的另一端叫做棧底 bottom 當棧中沒有元素時稱為空棧。插入操作稱為進棧或入棧,刪除操作稱為出棧或退棧。棧是先進後出的線性表,簡稱為lifo表。棧主要有兩...
棧 順序棧 鏈棧
棧 順序棧 鏈棧 分別用順序表和煉表實現棧,完成入棧 出棧 窺探棧頂元素等操作 commom.h ifndef common h define commom h include include include include include define elemtype int void swap...
順序棧,鏈棧
二,鏈棧 public inte ce istack public class seqstack implements istack 將棧置空 public void clear 判斷棧是否為空 public boolean isempty 返回棧中元素的個數 public intlength 返回...