順序表實現棧
#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的陣...