資料結構之順序棧的實現

2021-08-18 22:35:44 字數 2007 閱讀 2358

我們知道棧可以完成的基本操作是入棧,出棧,取棧頂元素,可以由順序表形式實現,也可以由鍊錶形式實現

今天我們就來實現一下順序棧

首先來看下順序棧的實現

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