用c语言,根据键盘输入数据建立一个单链表,并输出该单链表;2.根据屏幕菜单的选择,进行数据的插入、删除、查找操作,并在插入或删除后,再输出单链表;3.操作结束后,在屏幕菜单中选择0,从而结束程序运行。
时间: 2024-10-08 08:18:29 浏览: 41
C语言 数据结构双向链表简单实例
在C语言中,我们可以按照以下步骤来创建一个简单的单链表并实现基本的操作:
1. **建立单链表**:
首先,我们需要定义一个结构体`Node`来表示链表的节点,包含数据域和指向下一个节点的指针。
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
创建链表时,你可以通过`scanf`获取用户输入的数据,然后分配内存创建新节点并链接到链表头部。
```c
Node* createList() {
Node* head = NULL;
Node* newNode;
int input;
while (1) {
printf("请输入一个整数(0表示结束):");
scanf("%d", &input);
if (input == 0)
break;
newNode = (Node*)malloc(sizeof(Node));
newNode->data = input;
newNode->next = head;
head = newNode;
}
return head;
}
```
2. **链表操作**:
对于插入、删除和查找操作,可以分别定义函数如`insert`, `delete`, 和 `search`。例如,插入操作会在指定位置添加新节点,删除操作则会找到特定值并移除对应节点。
```c
void insert(Node** head, int value, int position) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = *head;
for (int i = 1; i < position && (*head != NULL); i++) {
*head = (*head)->next;
}
if (*head != NULL)
(*head)->next = newNode;
}
// 删除和搜索操作略...
```
3. **输出链表**:
遍历链表并在适当的地方打印节点信息,以便于显示。
```c
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
```
4. **主循环与退出**:
创建菜单,让用户根据输入选择操作,并在操作完成后输出链表。当用户选择0时,退出循环。
```c
int main() {
Node* listHead = createList();
while (1) {
// 显示菜单选项并获取用户输入
// 进行相应的插入、删除、查找操作
// 打印链表
printList(listHead);
// 检查是否需要结束
int choice;
printf("请选择操作(0-退出): ");
scanf("%d", &choice);
if (choice == 0)
break;
}
free(listHead); // 释放链表内存
return 0;
}
```
阅读全文