棧是一種後進先出的資料結構,只有兩種操作,入棧(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 ...