想了下,上學期學的資料結構線性結構還有些混亂的地方,想做一點注意事項的總結。
1.鍊錶
2.棧順序棧:定義乙個陣列(可以是陣列形式的data[ ]或指標形式的*data,若是指標形式就
需要在結構體中加乙個變數maxsize存放陣列的最大容量)和棧頂指標(在順序棧中就是
陣列下標),棧頂指標存放棧頂元素,初始化時棧頂為-1。下面給出順序棧的演算法。
#include#include#define maxsize 10
typedef struct stacknode * stack;
typedef int elementype; //方便一處改,處處改
struct stacknode
;stack creatstack() //初始化
int iffull(stack s)
int ifempty(stack s)
int push(stack s,elementype x)
}elementype pop(stack s)
int main()
;stack creatstack()
int ifempty(stack s) //s是棧頂指標
int push(stack s,elementype x)
}elementype pop(stack s)
int main()
for(i=0;i<5;i++)
printf("%d ",pop(s1));
printf("\n");
return 0;
}
3.佇列
順序佇列/迴圈佇列:順序佇列與迴圈佇列基本一致,都是利用陣列存放資料,但是迴圈
佇列在利用空間上要更高效一些。順序佇列用乙個向量空間(一般使用一維陣列)來存放
當前佇列中的元素。由於佇列的隊頭和隊尾的位置是變化的,設定兩個指標front和rear
分別指示隊頭元素和隊尾元素在向量空間中的位置,它們的初值在佇列初始化時均應置為0。
二者判斷隊空隊滿條件:順序佇列中q.front = q.rear 表示隊空,q.rear = maxsize表示
隊滿.而在迴圈佇列中q.front=q.rear表示隊空,而無法用q.rear=maxsize表示隊滿.(有
兩種方法,一種是設定標誌位,另外一種是放棄乙個空間,隊尾指標不指向任何元素,用
這兩種狀態把隊空隊滿區分開。第二種較為常用。下面給出迴圈佇列的常見演算法及c**。
#include#include#define maxsize 8 //佇列最大容量,但是對於迴圈佇列可以存放的元素個數為maxsize-1
個typedef int elementype;
typedef struct qnode * queue;
struct qnode
;queue create()
int ifempty(queue q)
int iffull(queue q)
int insert(queue q,elementype x)
}elementype delete(queue q)
}int length(queue q)
int main()
;struct queuenode
;void create(ptrtnode q) //初始化鏈佇列
int insert(ptrtnode q,elementype x)
return 1;
}elementype delete(ptrtnode q)
free(p);
return m; }}
int main()
{ int i,k;
queue q1;
ptrtnode s;
s=(ptrtnode)malloc(sizeof(struct queuenode));
create(s);
q1=(queue)malloc(sizeof(struct queue));
scanf("%d",&k);
q1->data=k;
q1->next=null;
s->front=q1;
s->rear=q1;
for(i=1;i
棧與佇列基本操作
include include typedef struct lnodelnode,linklist 頭插法 linklist create list head int n return head 尾插法 linklist create list tail int n else tail next ...
7 6 棧與佇列 棧的基本操作和應用
棧和佇列都是特殊的線性表,是限制訪問位置的線性結構 可以由順序表實現,也可以由鍊錶實現。棧定義為 只允許在表的一端進行插入和刪除的線性表 允許進行插入和刪除的一端叫做 棧頂 top 而另一端叫 棧底 bottom 棧中沒有任何元素時,稱為 空棧。設給定棧s a0,a1,an 1 稱a0為棧底,an ...
棧和佇列的基本操作
看歐立奇的 程式設計師面試寶典 的棧和佇列的部分,發現了部分問題。其中棧的部分,不能簡單的用malloc函式來初始化stack,應該呼叫create 函式 而且棧的base應該指向棧的最下面的資料的下乙個位址。全部除錯通過 棧的部分通過單鏈表來實現鏈棧的結構 include using namesp...