通过键盘读取元素建立单链表;指定一个元素,在此元素之前插入一个新元素;指定一个元素,删除此元素。写一串c语言代码实现以上内容
时间: 2024-10-11 09:07:42 浏览: 33
以下是C语言代码,实现了通过键盘读取元素构建单链表、在指定位置插入新元素以及删除指定元素的功能:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建新节点并分配内存
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode) {
newNode->data = value;
newNode->next = NULL;
} else {
printf("Memory allocation failed.\n");
exit(1);
}
return newNode;
}
// 在链表前插入新元素
void insertAtBeginning(Node** head, int value) {
Node* newNode = createNode(value);
newNode->next = *head;
*head = newNode;
}
// 删除指定元素
void deleteElement(Node** head, int target) {
Node* temp = *head;
Node* prev = NULL;
while (temp && temp->data != target) {
prev = temp;
temp = temp->next;
}
if (temp) {
if (prev) {
prev->next = temp->next;
} else {
*head = temp->next;
}
free(temp); // 释放已删除节点的内存
} else {
printf("Element not found in the list.\n");
}
}
// 打印链表
void printList(Node* head) {
Node* temp = head;
while (temp) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
int main() {
Node* head = NULL;
while (1) {
int choice, value;
printf("\n1. Insert at beginning\n2. Delete element\n3. Exit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter value to insert: ");
scanf("%d", &value);
insertAtBeginning(&head, value);
break;
case 2:
printf("Enter value to delete: ");
scanf("%d", &value);
deleteElement(&head, value);
break;
case 3:
if (head)
printList(head);
printf("Leaving program...\n");
exit(0);
default:
printf("Invalid choice.\n");
}
}
return 0;
}
阅读全文
相关推荐














