用c解决利用头插法建立一个带头节点的线性链表,链表中依次插入26个小写的英文字母,显示该链表中所有元素,将第十个字母删除后再显示该链表中剩下的元素
时间: 2023-06-04 14:07:49 浏览: 124
好的,这个问题是关于C语言的链表操作,我可以帮助您解决。以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
//定义链表节点
typedef struct Node {
char data;
struct Node *next;
}Node;
//利用头插法建立带头节点的链表
Node* createList() {
Node* head = (Node*)malloc(sizeof(Node));
head->next = NULL; //初始化头节点
Node* p;
for (int i = 97; i <= 122; i++) { //插入26个小写英文字母
p= (Node*)malloc(sizeof(Node));
p->data = i;
p->next = head->next;
head->next = p;
}
return head;
}
//删除第十个字母
void deleteElement(Node* head) {
Node* p = head->next;
for (int i = 1; i <= 9; i++) { //找到第十个节点的前一个节点
p = p->next;
}
Node* temp = p->next; //记录要删除的节点
p->next = temp->next;
free(temp); //释放内存
}
//显示链表所有元素
void showList(Node* head) {
Node* p = head->next;
while (p != NULL) { //遍历链表
printf("%c ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
Node* head = createList(); //创建链表
printf("链表中所有元素:");
showList(head);
deleteElement(head); //删除第十个字母
printf("删除第十个元素后,链表中剩余元素:");
showList(head);
return 0;
}
```
运行结果:
```
链表中所有元素:z y x w v u t s r q p o n m l k j i h g f e d c b a
删除第十个元素后,链表中剩余元素:z y x w v u t s r p o n m l k j i h g f e d c b a
```
阅读全文