2018/3/12
資料結構
1.棧
1.堆疊是一種特殊的線性表,遵循先進後出的原則,可以看做手槍的彈夾一樣,先進的子彈反而最後出
2.棧的主要型別:順序棧(運算元組操作),鏈棧(操作指標)
3.棧由於是一種特殊的線性表,因此可以仿造線性表的操作方式,但是在插入和刪除時要小心,在表的一側進行操作
4.棧的主要操作方式
4-1:新建棧(init_stack)
4-2:進棧(push)
4-3:出棧(pop)
4-4:判斷是否為空(isnotempty)
4-5:取棧頂元素(stacktop)
4-6:棧的刪除(destory)
2.順序棧的操作技巧
//標頭檔案
//順序棧的簡單操作
#include#include#define maxsize 100
struct sqstack
;//建立棧
int initstack(struct sqstack*s)
//入棧
int pushstack(struct sqstack *s, int e)
else }
//出棧
int popstack(struct sqstack *s, int *e)
else }
//取棧頂元素
int stacktop(struct sqstack *s, int *n)
else }
int stacknotempty(sqstack s)
else
return 1;
}//原始檔
#include"sqstack.h"
#include#includevoid main()
else
printf("棧頂元素為%2d\n", n);
printf("\n依次出棧的情況如下\n:");
while (stacknotempty(s))
system("pause");
}
鏈棧的使用
//鏈棧的簡單使用
/*標頭檔案*/
//鏈棧和普通單鏈表的區別無非是插入和刪除在棧頂
#include#includestruct stack
;struct stack * init_stack(struct stack *);//初始化
struct stack * pushstack(struct stack *head,int x);//入棧
void disp_stack(struct stack *);//顯示鏈棧
int count_stack(struct stack *);//計算鏈棧的資料個數
int popstack(struct stack *, int *d);//出棧
int stacktop(struct stack *, int*);//取棧頂元素
void destorystack(struct stack*);//破壞棧
//初始化鏈棧
struct stack * init_stack(struct stack *head)
//顯示鏈棧
void disp_stack(struct stack *head)
} printf("\n");
}//計算鏈棧中的元素
int count_stack(struct stack *head)
return k;
}//入棧
struct stack * pushstack(struct stack *head, int x)
//出棧
int popstack(struct stack *head, int *d)//出棧,用d將引數帶回
/*刪除操作*/
head->next = p->next;
*d = p->data;
free(p);
printf("%5d", *d);
}/*取棧頂元素*/
int stacktop(struct stack *head, int *num)
*num = p->data;
return 1;
}//破壞棧
void destorystack(struct stack*head)
printf("刪除成功");
}//原始檔
//鏈棧的使用
/*鏈棧和線性表的區別就是在插入和刪除的時候要在同一側進行操作*/
#include#include#include"linkstackpractice.h"
void main()
destorystack(head);
system("pause");
}
注意事項:由於c語言和pascal語言的標準不一樣,使用時注意從0開始還是從1開始
順序棧和鏈式棧
順序棧 採用順序儲存結構的棧 push pop peek 方法的時間複雜度為o 1 當需要擴充棧容量時push 方法的時間複雜度為o n package com.lzw.demo.stacktest public inte ce sstack package com.lzw.demo.stackte...
順序棧和鏈式棧
相信大家對棧都不陌生,棧作為一種基礎的資料結構,在很多地方都會用到,在這裡整理一下順序棧和鏈式棧的一些基礎操作。pragma onc define max size 10 class seqstack seqstack 判斷棧滿 bool full 判斷棧空 bool empty 入棧 void p...
順序棧 鏈式棧的python實現
棧是一種操作受限的線性表資料結構,特點是只能在一端進行插入和刪除操作,操作順序是先進後出,後進先出 棧根據實現方式可以分為順序棧和鏈式棧,順序棧是用陣列來實現,鏈式棧是用鍊錶來實現 順序棧的出棧操作的只涉及尾端的彈出操作,時間複雜度為o 1 而入棧操作,當插入的操作在順序棧的最大空間時,是o 1 當...