將鏈棧的頭部作為棧頂就很方便了,而且不必設定頭結點,每次插入都是將結點設定為棧頂元素,每次刪除都是將棧頂元素刪除。
具體實現如下:
建立乙個空鏈棧:
void initlinkstack(linkstack s) //與其他鍊錶不一樣的是,這裡不需要建立乙個頭結點
入棧:
void push(linkstack &s,user user)
出棧:
user pop(linkstack &s)
user=s->user;
linkstack p=s;
s=s->next; //將棧頂指標下移一位
delete(p);
return user;
}
取出棧頂元素
user gettop(linkstack s)
}
這裡提供乙份完整原始碼:
#includeusing namespace std;
typedef struct
user;
typedef struct stacknode
stacknode,*linkstack;
//建立乙個空鏈棧
void initlinkstack(linkstack s) //與其他鍊錶不一樣的是,這裡不需要建立乙個頭結點
//入棧
void push(linkstack &s,user user)
//出棧
user pop(linkstack &s)
user=s->user;
linkstack p=s;
s=s->next; //將棧頂指標下移一位
delete(p);
return user;
}//取出棧頂元素
user gettop(linkstack s)
}int main()
{ linkstack s;
user user;
//初始化鏈棧
initlinkstack(s);
//入棧
user.id=0;
strcpy(user.username,"gjw");
push(s,user);
//出棧
user=pop(s);
cout《至此,鏈棧的基本操作就弄完了
演算法設計 鏈棧和鏈佇列 鏈棧和鏈佇列的實現
1.鏈佇列。利用帶有頭結點的單鏈表來實現鏈佇列,插入和刪除的複雜度都為o 1 include include typedef struct qnode qnode typedef struct linkqueue linkqueue void initialize linkqueue linkque...
棧和佇列(基本實現)
1 定義 棧 stack 是一種常用的重要資料結構 線性表 它只允許在棧頂 top 進行刪除,插入,由於其具有後進先出的特性,又被叫做後進先出線性表。2.常用 儲存方式 1.順序儲存方式 2.鏈式儲存方式 順序棧 是指用順序儲存方式儲存的棧,絕大多數情況下是用陣列來進行儲存。這種儲存方式會由乙個ma...
順序棧 鏈棧 迴圈佇列 鏈隊基本操作的實現
一 實驗學時 2學時 二 實驗目的 三 實驗內容 順序棧的建立 取棧頂元素 入棧 出棧 佇列的建立 取隊中元素 入隊 出隊 迴圈佇列中入隊 出隊操作 四 主要儀器裝置及耗材 五 實驗步驟 分析問題 寫出演算法 編制程式 上機除錯 分析結果 六 程式清單 1.順序棧 include include d...