棧和佇列的插入 刪除 獲取頭尾元素操作

2021-08-15 17:19:40 字數 2694 閱讀 7522

棧:一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一端稱為棧頂,另一端稱為棧底。棧又稱為後進先出的線性表。

#pragma once

#include

#include

#include

typedef

int datatype;

typedef

struct stack

stack;

// 棧的實現介面

void stackinit(stack* s);//棧初始化

void stackpush(stack* s, datatype x);//壓棧

void stackpop(stack* s);//出棧

datatype stacktop(stack* s);//棧頂元素

size_t stacksize(stack* s);//棧大小

int stackempty(stack* s);//棧判空

void stackdestory(stack *s);//棧銷毀

#include"stack.h"

void

stackinit(stack* s)//初始化棧

void

stackpush(stack* s, datatype x)//壓棧

s->_array[s->_top++] = x;

}void

stackpop(stack* s)//出棧

}datatype

stacktop(stack* s)//棧頂元素

size_t

stacksize(stack* s)//棧大小

intstackempty(stack* s)//判空

void

stackdestory(stack *s)//棧銷毀

#include"stack.h"

test()

stackdestory(&s);

}int main()

佇列:一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列具有先進先出(fifo)的特性順序佇列。

#pragma once

#include

#include

#include

#include

typedef int datatype;

typedef struct queuenode

queuenode;

typedef struct queue

queue;

void queueinit(queue

* q);//初始化佇列

void queuepush(queue

* q, datatype x);//入佇列

void queuepop(queue

* q);//出佇列

datatype queuefront(queue

* q);//隊頭元素

datatype queueback(queue

* q);//隊尾元素

size_t queuesize(queue

* q);//佇列元素個數

datatype queueempty(queue

* q);//判空

void queuedestory(queue

* q);//銷毀佇列

void queueprint(queue

*q);//列印佇列

#include

"queue.h"

void queueinit(queue

* q)//初始化佇列

void queuepush(queue

* q, datatype x)//入佇列

else

//棧不為空

}void queuepop(queue

* q)//出佇列

datatype queuefront(queue

* q)//隊頭元素

datatype queueback(queue

* q)//隊尾元素

size_t queuesize(queue

* q)//佇列元素個數

return i;

}void queueprint(queue

*q)//列印佇列

}datatype queueempty(queue

* q)//判空

void queuedestory(queue

* q)//銷毀佇列

}

#include"queue.h"

test()

queueempty

(&q);

}int

main

()

佇列的插入 刪除操作

include using namespace std typedef int elemtype typedef struct node qnode,queueptr typedef struct linkqueue void initqueue linkqueue q int isempty li...

棧的建立,插入,刪除

資料結構學到了棧的部分了,呵呵自己寫了下程式,希望來訪的朋友多多提出意見啊!大家共同進步 include include include include define stack init size 10 define stackincrement 10 define ok 0 define err...

棧的插入 刪除問題

棧的插入一直比較懵,經常理不清頭緒。今天做了乙個關於棧的問題,思維還算清晰。趕緊記錄下來。大家應該都了解,棧是一種先入後出的資料結構。在進行插入時top指標決定著具體的操作,根據指標的不同,棧的操作分為兩種情況,具體如下 1 top指標所指向的是真實的棧頂節點 若指標正好指向的是節點本身,在棧中插入...