c_cpp 比较表示为链接列表的两个字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 比较表示为链接列表的两个字符串相关的知识,希望对你有一定的参考价值。

// https://www.geeksforgeeks.org/compare-two-strings-represented-as-linked-lists/
#include <iostream>
using namespace std;

class node {
public:
    char data;
    node *next;

    node () {
        data = '0';
        next = NULL;
    }
    node (char x) {
        data = x;
        next = NULL;
    }
};
class LL {
public:
    node *head;
    LL() {
        head = NULL;
    }
    void insert(char x);
    void print();
    int compare (LL h2);
};

void LL::insert(char x) {
    node *n = new node(x);
    if (head == NULL)
        head = n;
    else {
        node *last = head;
        while (last->next)
            last = last->next;
        last->next = n;
    }
}
void LL::print() {
    node *n=head;
    while(n) {
        cout<< n->data;
        n = n->next;
    }
    cout<< "\n";
}
int LL::compare(LL h2){
    node *n1 = head, *n2 = h2.head;
    while (n1 && n2 && n1->data == n2->data) {
         n1 = n1->next;
         n2 = n2->next;
    }
    if (n1 && n2)
        return (n1->data > n2->data)?1:-1;
    if (n1 && !n2)
        return 1;
    if (!n1 && n2)
        return -1;
    return 0;

}

int main() {
    LL h1, h2;
    char x;
    cout<< "Enter the 1st string: \n";
    while (true) {
        cin>>x;
        if (x == '.')
            break;
        else
            h1.insert(x);
    }
    while (true) {
        cin>>x;
        if (x == '.')
            break;
        else
            h2.insert(x);
    }

    h1.print();
    h2.print();
    cout<<h1.compare(h2);
}

以上是关于c_cpp 比较表示为链接列表的两个字符串的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 两个排序链接列表的交集

c_cpp 合并两个已排序的链接列表

c_cpp 合并两个已排序的链接列表,使合并列表的顺序相反

c_cpp 160.两个链接列表的交集 - 简单 - 2018.8.6

c_cpp 给定两个表示为字符串的数字,将数字作为字符串返回乘法。注意:数字可以任意大

c_cpp 除以表示为字符串的大数字