我們知道棧可以完成的基本操作是入棧,出棧,取棧頂元素,可以由順序表形式實現,也可以由鍊錶形式實現
今天我們就來實現一下順序棧
首先來看下順序棧的實現
寫完標頭檔案之後就開始我們的函式seqstack.h
#pragma once
#include
#include
#include
#define header printf("\n***************%s**********====\n",__function__);
typedef char seqstacktype;
typedef struct seqstackseqstack;
seqstack seq;
void seqstack_init(seqstack *seq);
void seqstack_print(seqstack *seq);
void seqstack_destory(seqstack *seq);
void seqstack_push(seqstack *seq,seqstacktype value);
void seqstack_pop(seqstack *seq)
int seqstack_gettop(seqstack *seq,seqstacktype value);
下面是測試函式和效果#include "seqstack.h"
void seqstack_init(seqstack *seq);
seq->size = 0;
seq->capacity = 1000;
seq->data = (seqstacktype*)malloc(seq->capacity*sizeof(seqstacktype));
retyrn;
}void seqstack_print(seqstack *seq)
if(seq->size == 0)
int i = 0;
for(;isize;i++)
printf("\n");
}void seqstack_resize(seqstack *seq)
seqstacktype *newdata = (seqstacktype *)malloc(seq->capacity*sizeof(seqstacktype)*2+1);
int i = 0;
for(;isize;i++)
free(seq->data);
seq->data = newdata;
return;
}void seqstack_push(seqstack *seq,seqstacktype value)
if(seq->size >= seq->capacity)
else
}void seqstack_pop(seqstack *seq)
if(seq->size == 0)
seq->size--;
}int seqstack_gettop(seqstack *seq,seqstacktype *value)
if(seq->size == 0)
*value = seq->data[size-1];
return 1;
}void seqstack_destroy(seqstack *seq)
seq->size = 0;
free(seq->data);
return;
}

資料結構遍歷順序棧 資料結構 順序棧的實現
資料結構 順序棧的實現 1 快速開始 棧是一種遵循元素後進 push 先出 pop 規則的線性表,即最後加入的元素最先出來,它的實現可以用陣列或者鍊錶。它的特點如下 先出,先入後出。除了頭尾節點之外,每乙個元素有乙個前驅,有乙個後繼。2 實現棧 我們已經說過了,棧是一種線性表,故其底層是基於陣列或者...
C 資料結構之棧 順序棧的實現
停更說明 國慶陪女朋友旅遊去了,並且發生了許多許多有趣的事情,有空再分享哈 這裡該來一條華麗麗的分割線 現在來說說資料結構中的棧,英文中好像是stack,翻譯過來棧其實是很形象的 棧的出口和入口相同,且只有乙個進出口 我們平時通過變數宣告 非new方法 申請來的儲存變數的方法其實就是棧記憶體。特點 ...
C 資料結構之棧的實現(順序棧)
首先我們定義了乙個棧模板類,它有幾個純虛函式,分別是棧類最常用的幾個函式 push 將元素放入棧頂 top 返回棧頂元素值 pop 彈出棧頂元素 clear 清空棧 析構函式會用到 同樣我們定義了判斷棧是否為空函式isempty 以及保護成員 棧的高度 長度 height 模板類定義 如下 temp...