用順序表實現的棧和順序表有什麼區別呢?
我們先來分析下它們的結構體
順序表:
typedef char seqlisttype;
typedef struct seqstack
max_size是這個順序表最多能容納的資料
size為當前的元素的個數
棧:
typedef char seqstacktype;
typedef struct seqstack
size為棧內元素的個數
capacity為data這段記憶體中容納的元素個數
1.順序表已經定義好了最大的長度;而棧的最大長度可以進行動態擴容。
2.順序表可以對內部元素進行各種操作,包括遍歷等;而棧只有三種操作:入棧、出棧、取棧頂元素,這樣可以使棧內的資料更安全。
以下為用順序表實現棧的**:
.c檔案
#include#include#include"seqstack.h"
void seqstackinit(seqstack* stack)
void seqstackdestory(seqstack* stack)
void seqstackresize(seqstack* stack)//擴容
//釋放原malloc的記憶體
free(stack->data);
stack->data = new_data;
return;
}void seqstackpushback(seqstack* stack, seqstacktype value)
else
return;
}void seqstackprintchar(seqstack* stack, const char* msg)
printf("\n");
return;
}void seqstackpopback(seqstack* stack)
int seqstacktop(seqstack* stack, seqstacktype* value)//返回棧頂元素的值
void testseqstackpushback()
void testseqstackpopback()
void testseqstacktop()
else
}int main()
.h檔案
#pragma once
#includetypedef char seqstacktype;
typedef struct seqstack
seqstack;
//棧初始化
void seqstackinit(seqstack* stack);
//棧的銷毀
void seqstackdestory(seqstack* stack);
//實現棧的動態擴容
void seqstackresize(seqstack* stack);//擴容
//入棧
void seqstackpushback(seqstack* stack, seqstacktype value);
//列印棧
void seqstackprintchar(seqstack* stack, const char* msg);
//出棧
void seqstackpopback(seqstack* stack);
//取棧頂元素
int seqstacktop(seqstack* stack, seqstacktype* value);//返回棧頂元素的值
測試結果如下:
資料結構 順序棧
編寫乙個程式,實現順序棧 假設棧中元素型別為char 的各種基本運算。並完成下面功能 1 初始化棧s 2 判斷棧s是否非空 3 依次進棧元素a,b,c,d,e 4 判斷棧s是否非空 5 輸出棧長度 6 輸出從棧頂到棧底元素 7 輸出出棧序列 8 判斷棧s是否非空 9 釋放棧。include incl...
資料結構 順序棧
構造乙個順序棧 當輸入9999時,結束入棧操作 輸出棧中元素,顯示棧頂元素,刪除棧頂元素 include include include define stack init size 100 define ok 1 define error 0 typedef int selemtype 順序棧結構...
資料結構 順序棧
棧是一種只能在一端進行插入或刪除操作的線性表。其中允許進行插入或刪除操作的一端稱為棧頂 top 棧頂是由乙個稱為棧頂指標的位置指示器來指示,它是動態變化的。表的另一端稱為棧底,棧底是固定不變的。先進後出 filo include include define maxsize 100 typedef ...