資料結構基礎整理 棧和佇列 01 棧的基礎操作

2021-10-03 04:37:11 字數 1405 閱讀 5688

棧是一種後進先出的資料結構,只有兩種操作,入棧(push)和出棧(pop),因為涉及到優先順序,被廣泛應用於各種演算法。

對於棧需要注意的就是棧頂指標的具體含義,因為在不同的應用下會有不同的含義。

#define size 50

//注意陣列下標和棧頂指標的開始值不同

typedef struct

stack;

stack s;

void inistack()

void push(int m)

s.data[s.top++] = m;

return;

}

void pop(int i)

int m = s.data[--s.top];

printf("已 pop 第 %d 個元素,其值為 %d \n",i+1,m);

return;

}

#define size 50

typedef struct

sstack;

sstack ss;

sstack* s = &ss;

void inistack()

void push(int m, int stacknumber)

if (stacknumber == 1)

else

return;

}

void pop(int stacknumber)

m=s->data[s->top1--];

printf("已 pop 棧 1 的乙個元素 %d \n", m);

} else

m = s->data[s->top2++];

printf("已 pop 棧 2 的乙個元素 %d \n", m);

}}

typedef struct stack

stack;

//鍊錶為頭插法

stack* top = null;

void inistack()

void push(int m)

void pop()

stack* tmp = top->next;

printf("已從棧頂 pop 乙個元素 %d \n",tmp->data);

top->next = tmp->next;

free(tmp);

return;

}

資料結構整理 佇列和棧

這裡只談論迴圈佇列,普通佇列空間浪費太嚴重 建議使用類來封裝,因為stl中的queue和stack也都是封裝好的。迴圈佇列反正是使用vector來實現的,畢竟能實現隨機訪問。有頭指標和尾指標 用來指向最後乙個元素的後乙個位置 還有乙個表示資料的數目。由於空元素的存在,陣列實際的大小為該元素值 1 所...

資料結構基礎 棧和佇列

棧 stack 是限定僅在表尾進行出入和刪除操作的線性表。後進先出,last in first out 棧頂 top 棧底 bottom 空棧 top 1 棧是一種特殊的線性表,插入和刪除操作只能在表尾進行 top 插入 push,進棧 刪除 pop,出棧 data 同線性表,元素具有相同的型別,相...

資料結構基礎 棧和佇列

特性 後進先出 from queue import lifoqueue lq lifoqueue maxsize 0 棧寫入資料 lq.put 0 lq.put 1 lq.put 2 刪除隊尾資料,並返回該資料 lq.get 輸出佇列所有資料 print lq.queue 輸出 0,1,2 0,1 ...