📌  相关文章
📜  用于比较表示为链表的两个字符串的Python程序

📅  最后修改于: 2022-05-13 01:56:56.351000             🧑  作者: Mango

用于比较表示为链表的两个字符串的Python程序

给定两个字符串,表示为链表(每个字符都是链表中的一个节点)。编写一个与 strcmp() 工作类似的函数compare(),即,如果两个字符串相同,则返回 0,如果第一个链表在字典上更大,则返回 1,如果第二个字符串在字典上更大,则返回 -1。
例子:

Input: list1 = g->e->e->k->s->a
       list2 = g->e->e->k->s->b
Output: -1

Input: list1 = g->e->e->k->s->a
       list2 = g->e->e->k->s
Output: 1

Input: list1 = g->e->e->k->s
       list2 = g->e->e->k->s
Output: 0
Python
# Python program to compare two strings 
# represented as linked lists
  
# A linked list node 
# structure
class Node:
  
    # Constructor to create 
    # a new node
    def __init__(self, key):
        self.c = key ; 
        self.next = None
  
def compare(list1, list2):
      
    # Traverse both lists. Stop when 
    # either end of linked list is 
    # reached or current characters 
    # don't match
    while(list1 and list2 and 
          list1.c == list2.c):
        list1 = list1.next 
        list2 = list2.next 
  
    # If both lists are not empty, 
    # compare mismatching characters 
    if(list1 and list2):
        return 1 if list1.c > list2.c else -1 
  
    # If either of the two lists has 
    # reached end
    if (list1 and not list2):
        return 1 
  
    if (list2 and not list1):
        return -1 
    return 0
  
# Driver code
list1 = Node('g')
list1.next = Node('e')
list1.next.next = Node('e')
list1.next.next.next = Node('k')
list1.next.next.next.next = Node('s')
list1.next.next.next.next.next = Node('b')
  
list2 = Node('g')
list2.next = Node('e')
list2.next.next = Node('e')
list2.next.next.next = Node('k')
list2.next.next.next.next = Node('s')
list2.next.next.next.next.next = Node('a')
  
print compare(list1, list2)
# This code is contributed by Nikhil Kumar Singh(nickzuck_007)


输出:

1

有关详细信息,请参阅有关比较表示为链表的两个字符串的完整文章!