用devc++编写设计一个算法Equal(),在链串上实现判断两个串是否相等的功能。 (1)S1=“a,b,c,d,e,c,f”;S2=“a,b,c,d,e,c,f”。(2)S1=“a,b,c,d,e”;S2=“a,b,c,d,c”。
时间: 2023-10-12 18:05:00 浏览: 131
```
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
char data; // 存储字符
struct node *next; // 指向下一个节点的指针
}Node, *LinkString;
// 初始化链串
void Init(LinkString &L){
L = (LinkString)malloc(sizeof(Node)); // 申请头结点空间
L->next = NULL; // 头结点初始指向为空
}
// 插入字符
void Insert(LinkString &L, char c){
Node *p = (Node *)malloc(sizeof(Node)); // 申请新节点
p->data = c; // 新节点存储字符
p->next = L->next; // 新节点指向原头结点的下一个节点
L->next = p; // 头结点指向新的头节点
}
// 判断两个链串是否相等
bool Equal(LinkString L1, LinkString L2){
Node *p1 = L1->next, *p2 = L2->next; // 分别指向两个链串的第一个节点
while(p1 && p2){ // 两个链串都没有遍历结束
if(p1->data != p2->data){ // 发现字符不相同
return false;
}
p1 = p1->next; // 遍历下一个节点
p2 = p2->next;
}
if(p1 == NULL && p2 == NULL){ // 两个链串都遍历结束
return true;
}
else{ // 两个链串长度不相等
return false;
}
}
int main(){
LinkString L1, L2;
Init(L1);
Init(L2);
Insert(L1, 'f');
Insert(L1, 'c');
Insert(L1, 'e');
Insert(L1, 'd');
Insert(L1, 'c');
Insert(L1, 'b');
Insert(L1, 'a');
Insert(L2, 'f');
Insert(L2, 'c');
Insert(L2, 'e');
Insert(L2, 'd');
Insert(L2, 'c');
Insert(L2, 'b');
Insert(L2, 'a');
if(Equal(L1, L2)){
printf("两个链串相等\n");
}
else{
printf("两个链串不相等\n");
}
return 0;
}
```
阅读全文