定义单链表head和字符串str,初始化单链表,编写串比较函数,调用串插入,串删除模块实现串操作。
时间: 2023-05-20 07:02:50 浏览: 70
好的,以下是代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Node {
char data;
struct Node *next;
} Node, *LinkedList;
LinkedList initLinkedList() {
LinkedList head = (LinkedList)malloc(sizeof(Node));
head->next = NULL;
return head;
}
int strCompare(char *str1, char *str2) {
int len1 = strlen(str1), len2 = strlen(str2);
int minLen = len1 < len2 ? len1 : len2;
for (int i = 0; i < minLen; i++) {
if (str1[i] < str2[i]) {
return -1;
} else if (str1[i] > str2[i]) {
return 1;
}
}
if (len1 == len2) {
return 0;
} else if (len1 < len2) {
return -1;
} else {
return 1;
}
}
void strInsert(LinkedList head, char *str) {
int len = strlen(str);
Node *p = head;
while (p->next != NULL && strCompare(str, &(p->next->data)) > 0) {
p = p->next;
}
for (int i = 0; i < len; i++) {
Node *newNode = (Node*)malloc(sizeof(Node));
newNode->data = str[i];
newNode->next = p->next;
p->next = newNode;
p = p->next;
}
}
void strDelete(LinkedList head, char *str) {
Node *p = head;
while (p->next != NULL) {
if (strCompare(str, &(p->next->data)) == 0) {
Node *temp = p->next;
p->next = temp->next;
free(temp);
} else {
p = p->next;
}
}
}
int main() {
LinkedList head = initLinkedList();
char str[] = "hello world";
strInsert(head, str);
strDelete(head, "l");
Node *p = head->next;
while (p != NULL) {
printf("%c", p->data);
p = p->next;
}
printf("\n");
return 0;
}
```
这段代码实现了单链表的初始化、串比较、串插入和串删除操作。在主函数中,我们初始化了一个单链表,然后插入了一个字符串"hello world",接着删除了其中的字符"l",最后输出剩余的字符串。