正如标题中所述,我想知道如何允许用户推送整数并打印它们。我写了另一个简单的程序,用户可以按键做一些事情,比如推送/弹出/打印,即使一个只是普通堆栈,另一个是链表,也可以合并它们吗?
这是第一个简单地让用户添加字符串的程序,推送/弹出/打印:
class Program
{
static void Main(string[] args)
{
Stack<string> mystack = new Stack <string>();
int number = -1;
while (number != 0)
{
Console.WriteLine("1- enter string");
Console.WriteLine("2 - delete string");
Console.WriteLine("3- print all strings");
Console.WriteLine("0- Exit");
number = Convert.ToInt32(Console.ReadLine());
{
switch (number)
{
case 1:
Console.Write("Enter string: ");
mystack.Push(Console.ReadLine());
break;
case 2:
mystack.Pop();
Console.WriteLine("first string deleted");
break;
case 3:
foreach (string i in mystack)
{
Console.WriteLine(i);
}
break;
}
}
}
Console.ReadKey();
}
}
}
这是第二个,它是按升序排序的链表,但整数是由编码器输入的。
{
class LinkedList
{
public class node
{
public int data;
public node next;
};
static node start;
static void sortList(node head)
{
int startVal = 1;
while (head != null)
{
head.data = startVal;
startVal++;
head = head.next;
}
}
static void push(node head_ref,
int new_data)
{
node new_node = new node();
new_node.data = new_data;
new_node.next = head_ref;
head_ref = new_node;
start = head_ref;
}
static void printList(node node)
{
while (node != null)
{
Console.Write(node.data + " ");
node = node.next;
}
}
public static void Main(String[] args)
{
start = null;
push(start, 2);
push(start, 1);
push(start, 6);
push(start, 4);
push(start, 5);
push(start, 3);
sortList(start);
printList(start);
Console.ReadKey();
}
您正在尝试合并具有不同用途的两种不同数据类型的功能。
堆栈和链表是两种线性数据结构。程序员可以使用任何编程语言来实现它们。堆栈和链表的主要区别在于,堆栈根据FIFO机制工作,而链表则通过存储数据和其他节点的地址来相互引用。
在堆栈中,可以读取最上面的元素。另一方面,在链表中,如果程序员想要访问特定的元素,就必须从头遍历每个元素。
尽管您可以将两者结合使用,以按排序的方式将数据推送到堆栈。
参考:https://pediaa.com/what-is-the-difference-between-stack-and-linked-list/#:~:text=A%20stack%20是%20Stract,介于%20stack%20和%20linked%20列表之间。