棧的兩種實現

2021-08-18 09:10:11 字數 2831 閱讀 3666

順序表實現棧

#include 

#include

//順序表實現棧

#define test_head printf("\n*****=%s*****=\n", __function__);

#define default_sz 5

typedef char datatype;

typedef struct seqstack

seqstack;

//棧的初始化

void stackinit(seqstack *pstack)

//開闢空間

pstack->data = (datatype *)malloc(default_sz * sizeof(datatype));

if(pstack->data == null)

pstack->size = 0;

pstack->capacity = default_sz;

}//入棧--即在順序表尾部插入元素

void stackpush(seqstack *pstack, datatype data)

if(pstack->capacity == pstack->size)

pstack->data = ptr;

pstack->capacity = (pstack->capacity) * 2 + 1;

}pstack->data[pstack->size] = data;

++pstack->size;

}//出棧

void stackpop(seqstack *pstack)

if(pstack->size == 0)

--pstack->size;

}//取棧頂元素

datatype stackgettop(seqstack *pstack)

return pstack->data[(pstack->size) - 1];

}//列印棧

void stackprint(seqstack *pstack, char *msg)

if(pstack->size == 0)

int i = 0;

for(i = (pstack->size) - 1; i >= 0; --i)

}//清空棧

void stackempty(seqstack *pstack)

//銷毀棧

void stackdestory(seqstack **pstack)

//////

//////

//////

//////

////

//測試函式

單鏈表實現棧

//單鏈表實現棧

#include

#include

typedef char datatype;

typedef struct linkstack

linkstack;

//初始化

void linkstackinit(linkstack **head)

//建立新結點

linkstack *creatnode(datatype data)

//入棧(頭插, 要改變頭指標的指向)

void linkstackpush(linkstack **head, datatype data)

linkstack *new_node = creatnode(data);

if(*head ==

null)

linkstack *temp =

*head;

new_node->next = temp;

*head = new_node;

}//出棧(頭刪, 也要修改頭指標的指向)

void linkstackpop(linkstack **head)

if(*head ==

null)

linkstack *temp =

*head;

*head = temp->next;

free(temp);

}//取棧頂元素

datatype linkstackgettop(linkstack *head)

//列印棧

void linkstackprint(linkstack *head, char *msg)

linkstack *temp = head;

while(temp !=

null)

}//銷毀棧

void linkstackdestory(linkstack **head)

if(*head ==

null)

linkstack *temp =

*head;

linkstack *cur =

null;

while(temp !=

null)

*head =

null;

head =

null;

}//測試函式

棧的兩種實現

棧的基本實現 include stdafx.h include include define maxsize 64 using namespace std 基於陣列實現的棧 class stack 預設建構函式 int push int data 元素入棧 int pop 元素出棧 bool ise...

棧的兩種C 實現

棧 stack 是限制插入和刪除只能在乙個位置上進行的表,該位置是表的末端,叫做棧的頂 top 它是後進先出 lifo 的。對棧的基本操作只有push 進棧 和pop 出棧 兩種,前者相當於插入,後者相當於刪除最後的元素。棧本質上是一種受限制的表,所以可以使用任何一種表的形式來實現它,最常用的是使用...

棧的兩種實現方式

一 陣列實現棧 首先需要定義乙個陣列來儲存棧中的資料,並定義乙個變數來記錄陣列中儲存元素的個數,編寫乙個構造方法來構造乙個長度為十得陣列。先頂i有乙個陣列來儲存棧中的元素 private object array 定義陣列中儲存元素的個數 private int size 構造後乙個長度與為10的陣...