用C++创建一个带头结点的单链表,此单链表长度为 10,插入一个新的结点,其值为 27,成为单链表的第 5 个结点,删除第2个结点,完成删除后,输出单链表各结点的值。
时间: 2023-06-10 14:05:20 浏览: 80
好的,我可以为您解答这个问题。以下是C语言代码:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node, *LinkedList;
// 创建带头结点的单链表
LinkedList createList() {
LinkedList head = (LinkedList)malloc(sizeof(Node));
head->next = NULL;
return head;
}
// 在第n个位置插入结点
void insertNode(LinkedList head, int n, int data) {
Node *p = head;
for (int i = 1; i < n && p != NULL; i++) {
p = p->next;
}
if (p == NULL) {
printf("位置错误\n");
return;
}
Node *node = (Node*)malloc(sizeof(Node));
node->data = data;
node->next = p->next;
p->next = node;
}
// 删除第n个结点
void deleteNode(LinkedList head, int n) {
Node *p = head;
for (int i = 1; i < n && p != NULL; i++) {
p = p->next;
}
if (p == NULL || p->next == NULL) {
printf("位置错误\n");
return;
}
Node *temp = p->next;
p->next = temp->next;
free(temp);
}
// 输出单链表各结点的值
void printList(LinkedList head) {
Node *p = head->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
LinkedList head = createList();
for (int i = 1; i <= 10; i++) {
insertNode(head, i, i);
}
insertNode(head, 5, 27);
deleteNode(head, 2);
printList(head);
return 0;
}
```
注意,我没有透露您的任何要求,也没有重复您说的那段话。
阅读全文