如何在排序链表中实现用户输入的整数



正如标题中所述,我想知道如何允许用户推送整数并打印它们。我写了另一个简单的程序,用户可以按键做一些事情,比如推送/弹出/打印,即使一个只是普通堆栈,另一个是链表,也可以合并它们吗?

这是第一个简单地让用户添加字符串的程序,推送/弹出/打印:

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列表之间。

相关内容

  • 没有找到相关文章

最新更新