(C語言)簡單明瞭的 陣列模擬棧+ (C++)陣列模擬棧
C語言資料結構中的很多東西都能夠通過陣列和連結串列來實現,所以熟練陣列和連結串列是很有必要的。
棧的特點就是先進後出,如圖輸出。
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <memory.h>//memset庫源
using namespace std;
struct Stack
{
char space[1024];
int top;
};
void init(Stack *s)
{
s->top=0;
memset(s->space,0,1024);
}
bool Isfull(Stack *s)
{
return s->top==1024;
}
char pop(Stack *s)
{
return s->space[--s->top];
}
void push(Stack *s,char c)
{
s->space[s->top++]=c;
}
int Is_empty(Stack *s)
{
if(s->top==0)
return 1;
return 0;
}
int main()
{
Stack st;
init(&st);
if(!Isfull(&st))
push(&st,'a');
if(!Isfull(&st))
push(&st,'b');
if(!Isfull(&st))
push(&st,'c');
if(!Isfull(&st))
push(&st,'d');
if(!Isfull(&st))
push(&st,'e');
if(!Isfull(&st))
push(&st,'f');
while(!Is_empty(&st))
cout<<pop(&st)<<endl;
return 0;
}
如果在純C下,把cout輸出改用printf
#include <iostream>
#include <memory.h>
using namespace std;
struct Stack
{
void init();
bool isEmpty();
bool isFull();
char pop();
void push(char c);
private:
char space[1024];
int top;
};
void Stack::init()
{
top=0;
memset(space,0,1024);
}
bool Stack::isEmpty()
{
return top==0;
}
bool Stack::isFull()
{
return top==1024;
}
char Stack::pop()
{
return space[--top];
}
void Stack::push(char c)
{
space[top++]=c;
}
int main()
{
Stack st;
st.init();
for(char v='a';!st.isFull()&&v!='z'+1;++v)
{
st.push(v);
}
while(!st.isEmpty())
cout<<st.pop()<<" ";
return 0;
}
下面是 C++連結串列模擬棧/
#include <iostream>
#include <memory.h>
using namespace std;
struct Node
{
int data;
struct Node * next;
};
class List
{
public:
List *createList();
void insertList(int d);
void traverseList();
private:
Node * head;
};
List * List::createList()
{
head=new Node;
head->next = NULL;
}
void List::insertList(int d)
{
Node * cur = new Node;
cur->data=d;
cur->next = head->next;
head->next=cur;
}
void List::traverseList()
{
Node * ph = head->next;
while(ph!=NULL)
{
cout<<ph->data<<endl;
ph = ph->next;
}
}
int main()
{
List list;
list.createList();
for(int i=0;i<10;i++)
{
list.insertList(i);
}
list.traverseList();
return 0;
}
相關文章
- 陣列模擬單連結串列陣列
- .NET 下 模擬陣列越界陣列
- 資料結構之C語言模擬整數陣列實現資料結構C語言陣列
- C語言 簡單的佇列(陣列佇列)C語言佇列陣列
- 陣列模擬單連結串列你會了嗎?陣列
- [ASM C/C++] C語言陣列ASMC++C語言陣列
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列
- java:模擬棧操作Java
- 基數排序--陣列模擬桶結構排序陣列
- 從一道簡單模擬題看陣列越界以及其他陣列
- C語言/C++程式設計學習:棧的程式碼實現之陣列方案C語言C++程式設計陣列
- C語言陣列C語言陣列
- 陣列模擬雙連結串列,你get到了嗎?陣列
- c語言的陣列C語言陣列
- c語言關於陣列的簡單運算C語言陣列
- 關於c語言模擬c++的多型C語言C++多型
- 簡單機器語言的模擬 (轉)
- JavaScript模擬表單(帶陣列的複雜資料結構)提交JavaScript陣列資料結構
- 聯賽模擬測試18 A. 施工 單調佇列(棧)優化DP佇列優化
- C語言(字元陣列)C語言字元陣列
- PAT-B 1008 陣列元素迴圈右移問題【簡單模擬】陣列
- JS模擬陣列操作(新增、刪除、插入、排序、反轉)JS陣列排序
- [C++]陣列C++陣列
- C語言模擬試題1C語言
- C語言模擬試題2C語言
- C語言模擬試題3C語言
- C語言模擬試題4C語言
- C語言模擬試題5C語言
- C語言模擬試題6C語言
- 陣列模擬佇列進階版本——環形佇列(真正意義上的排隊)陣列佇列
- JavaScript陣列api簡單說明JavaScript陣列API
- PAT-B 1019 數字黑洞【陣列+模擬】陣列
- C/C++ 二維陣列的理解(多維陣列)C++陣列
- 【Java程式設計】使用Java模擬C/C++中的queue佇列Java程式設計C++佇列
- c++中的陣列C++陣列
- C語言 指標與陣列C語言指標陣列
- c語言陣列、sizeof()及strlen()C語言陣列
- C語言基礎-1、陣列C語言陣列