(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 下 模擬陣列越界陣列
- [NOIP 2024 模擬2]陣列操作陣列
- 6.5陣列--模擬、偏移量-螺旋矩陣陣列矩陣
- C語言/C++程式設計學習:棧的程式碼實現之陣列方案C語言C++程式設計陣列
- 陣列模擬單連結串列你會了嗎?陣列
- c語言的陣列C語言陣列
- C語言陣列C語言陣列
- c語言關於陣列的簡單運算C語言陣列
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列
- PAT-B 1008 陣列元素迴圈右移問題【簡單模擬】陣列
- c語言字元陣列C語言字元陣列
- java:模擬棧操作Java
- PAT-B 1019 數字黑洞【陣列+模擬】陣列
- 【PAT A1051】【棧/模擬】
- 陣列模擬雙連結串列,你get到了嗎?陣列
- 聯賽模擬測試18 A. 施工 單調佇列(棧)優化DP佇列優化
- C/C++ 二維陣列的理解(多維陣列)C++陣列
- c++中的陣列C++陣列
- C++陣列 字串C++陣列字串
- C語言 指標與陣列C語言指標陣列
- C語言基礎-1、陣列C語言陣列
- JS模擬陣列操作(新增、刪除、插入、排序、反轉)JS陣列排序
- Codeforces #123D: 字尾陣列+單調棧3D陣列
- 陣列模擬佇列進階版本——環形佇列(真正意義上的排隊)陣列佇列
- 1441 用棧操作構建陣列陣列
- go 語言陣列Go陣列
- 聊聊陣列與連結串列,棧與佇列陣列佇列
- JavaScript資料結構之陣列棧佇列JavaScript資料結構陣列佇列
- c語言-運算子,陣列,指標C語言陣列指標
- C語言陣列求學生成績C語言陣列
- time模組,collections模組,佇列和棧佇列
- C++陣列長度C++陣列
- c++陣列排序插入C++陣列排序
- 【Java程式設計】使用Java模擬C/C++中的queue佇列Java程式設計C++佇列
- C/C++ 讀入一個整型陣列,陣列大小未知C++陣列
- 【陣列】1608. 特殊陣列的特徵值(簡單)陣列特徵
- Python全棧Web(JavaScript函式、陣列)Python全棧WebJavaScript函式陣列
- ARM彙編和C語言混合程式設計中陣列的陣列的操作C語言程式設計陣列