栈的基本操作

简介: 栈的基本操作

问题

在数据结构的学习中,栈是一个重要的部分,我们知道栈(stack)是一种线性表结构,只允许在表的一端进行插入和删除操作的线性表。简单来说,一种后进先出的线性表,简称为LIFO结构。那么它的基本操作有哪些,如何应用的知识呢?


方法

(1)首先栈是一个线性表。中允许插入和删除的一端成为顶(top);另一段则成为底(bottom)。当表中没有任何元素,称为空

(2)基本操作:定义节点类;赋值;查找第i个结点;前插法;尾插法;第i个结点前插入;删除第i个结点;遍历。

代码清单 1

#定义结点类
class LinkNode:
   #self.data 类的成员变量
#(data,...) 形参
def __init__(self,data=-1,next=None):
      self.data = data
      self.next = next
#第一步
n5 = LinkNode()
n5.data = 5
n5.next = None
n4 = LinkNode()
n4.data = 4
n4.next = n5
n3 = LinkNode()
n3.data = 3
n3.next = n4
n2 = LinkNode()
n2.data = 2
n2.next = n3
n1 = LinkNode()
n1.data = 1
n1.next = n2
head = LinkNode()
head.data = -1
head.next = n1
#查找第i个结点
i = 3
p = head
for k  in range(i):
   p = p.next
print(p.data)
#前插法
for i in range(1,101):
   q = LinkNode()
   q.data = i
   q.next = None
   q.next = head.next
head.next = q
#尾插法
for i in range(1,101):
   q = LinkNode()
   q.data = i
   q.next = None
   p.next = q
   p = p.next
#第十个结点前插入999
i = 9
p = head
for k in range(i):
   p  = p.next
q = LinkNode()
q.data = 999
q.next = p.next
p.next = q
#删除第10个结点
i = 9
p = head
for k in range(i):
   p = p.next
p.next = p.next.next
#遍历
p = head
while p.next!=None:
   p=p.next
   print(p.data)


结语

针对栈的基本知识,以及如何运用栈的基本操作等问题,提出上述几个方面的知识和操作,通过亲自实验,证明该方法是有效的,本文使用这种方法解决了如何查找第i个结点,删除结点,遍历等问题,但方法并不简便,还有考虑不周的地方,未来可以继续研究更加简洁方便的代码进行处理。

目录
相关文章
|
12天前
|
算法 C语言
【数据结构与算法 经典例题】使用栈实现队列(图文详解)
【数据结构与算法 经典例题】使用栈实现队列(图文详解)
|
6天前
|
存储 缓存 算法
堆和栈的区别及应用场景
堆和栈的区别及应用场景
|
12天前
|
存储 测试技术
【数据结构】操作受限的线性表,栈的具体实现
【数据结构】操作受限的线性表,栈的具体实现
20 5
|
12天前
|
算法 C语言
【数据结构与算法 经典例题】使用队列实现栈(图文详解)
【数据结构与算法 经典例题】使用队列实现栈(图文详解)
|
13天前
|
算法
【C/数据结构和算法】:栈和队列
【C/数据结构和算法】:栈和队列
19 1
|
17天前
|
C++
【洛谷 P1044】[NOIP2003 普及组] 栈 题解(递归+记忆化搜索)
**NOIP2003普及组栈问题**:给定操作数序列1到n,仅允许push(进栈)和pop(出栈)操作。目标是计算所有可能的输出序列总数。输入包含一个整数n(1≤n≤18)。示例输入3,输出5。当队列空时返回1,栈空则只能入栈,栈非空时可入栈或出栈。AC C++代码利用记忆化搜索求解。
12 1
|
5天前
|
存储 缓存 算法
堆和栈的区别及应用场景
堆和栈的区别及应用场景
|
6天前
|
算法
数据结构与算法:栈与队列
数据结构与算法:栈与队列
|
9天前
|
存储 算法 调度
算法与数据结构-栈篇
算法与数据结构-栈篇
12 0
|
10天前
|
存储 人工智能 程序员
技术心得记录:堆(heap)与栈(stack)的区别
技术心得记录:堆(heap)与栈(stack)的区别