目錄
一、棧二、順序棧的實現
三、鏈式棧的實現
四、棧的應用場景
棧限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。棧所需要的一般功能:
棧的分類:/*棧的定義*/
typedef struct stack
stack, *stack_p;
/*初始化棧操作,n為需要開闢的空間*/
*stack_p init_stack(int n)
sp->stack = calloc(n, sizeof(int));//分配n塊資料
sp->size = n;//n塊資料域
sp->top = -1;//沒有存放任何資料 此時 棧頂=棧底
return sp;
}
/*判斷棧是否為空*/
bool isempty(stack_p sp)
/*判斷棧是否存放滿資料*/
bool isfull(stack_p sp)
/*入棧操作, 引數為需要入棧的資料, 以及對應存放的棧*/
bool push(int data, stack_p sp)
sp->top++;
sp->stack[sp->top] = data;
re
/*出棧操作*/
bool pop(int *data, stack_p sp)
*data = sp->stack[sp->top];//先取值
sp->top--;//棧頂往棧底方向移動
return true;
}
/*顯示棧空間中存放的資料*/
void showstackdata(stack_p sp)
int pos;
for(pos=0; pos<=sp->top; pos++) }
/*清空棧*/
void clearstack(stack_p sp)
/*定義棧儲存節點 以及 棧(棧頂與棧底指標)*/
typedef struct stack_node
stacknode,*stacknode_p;
typedef struct stack
stack,*stack_p;
/*初始化棧*/
stack_p init_stack()
return sp;
}
/*判斷棧是否為空*/
bool isempty(stack_p sp)
/*
入棧:輸入需要入棧的資料
(包含給對應資料建立棧儲存節點,不含頭結點)
*/void push(int data, stack_p sp)
}
/*出棧*/
bool pop(stack_p sp)
//出棧
stacknode_p stnode_p = sp->top;
sp->top = sp->top->next;
sp->size--;
//釋放空間
free(stnode_p);
return true;
}
/*遍歷棧*/
void showstack(stack_p sp)
//從棧頂一直列印到棧底
int pos;
stacknode_p tmp = sp->top;
for(pos=0; possize; pos++)
}
1、數制轉換/*清空棧*/
bool clearstack(stack_p sp)
int pos;
int size = sp->size;//記錄棧中總數量
stacknode_p tmp;
for(pos=0; postop;
//指向下一資料
sp->top = tmp->next;
sp->size--;
//釋放資料
free(tmp);
} return true;
}
結果:2、括號匹配int main(int argc, char const *ar**)
while(1)
else break;
} return 0;
}
測試結果: 3、行編輯程式4、迷宮求解5、表示式求值int main(int argc, char const *ar**)
': pop(&tmp_data,sp);//當輸入為右括號或者右花括號則出棧對比
showstack(sp);
if(data == ')')//將括號反轉進行對比
data = '(';
else if (data == '}')
data = '
printf("\n");
} return 0;
}
6、運算子優先順序
7、遞迴
常用資料結構的應用場景
1 單向鏈結 單向鍊錶適用於只從一端單向訪問的場合,這種場合一般來說 1 刪除時,只適合刪除第乙個元素 2 新增時,只直接新增到最後乙個元素的後面或者新增到第乙個元素的前面 3 屬於單向迭代器,只能從乙個方向走到頭 只支援前進或後退,取決於實現 查詢效率極差。不適合大量查詢的場合。這種典型的應用場合...
Redis基礎 應用場景 資料結構及案例
解壓檔案,並建立軟體連線 tar zxvf redis 3.0.5.tar.gz c export servers ln s redis 3.0.5 redis 編譯redis原始碼 cd export servers redis make 先安裝gcc 將編譯後的可執行檔案安裝到 user loc...
常見資料結構應用場景
可以簡單的按照速度將通用資料結構劃分為 陣列和鍊錶 最慢 樹 較快 雜湊表 最快 增 刪 改 查是四大常見操作,不過其實可以濃縮為兩個操作 增和查。刪除操作和和修改操作都是建立在查詢操作上的,所以完美的資料結構應該是具有較高的插入效率和查詢效率。可以根據下圖選擇合適的通用資料結構 陣列在以下三個情形...