用c++语言 编写程序,对单链表做生成运算。 1)头插法 2)尾插法
时间: 2023-06-14 22:03:18 浏览: 126
以下是用C语言实现单链表的生成,包括头插法和尾插法:
```c
#include <stdio.h>
#include <stdlib.h>
//定义链表结构体
typedef struct Node {
int data;
struct Node *next;
} Node;
//头插法创建链表
Node *createListHead(int n) {
Node *head = NULL;
Node *p = NULL;
int i;
for (i = 0; i < n; i++) {
p = (Node *)malloc(sizeof(Node));
printf("请输入第%d个节点的值: ", i + 1);
scanf("%d", &(p->data));
p->next = head;
head = p;
}
return head;
}
//尾插法创建链表
Node *createListTail(int n) {
Node *head = NULL;
Node *tail = NULL;
Node *p = NULL;
int i;
for (i = 0; i < n; i++) {
p = (Node *)malloc(sizeof(Node));
printf("请输入第%d个节点的值: ", i + 1);
scanf("%d", &(p->data));
p->next = NULL;
if (head == NULL) {
head = p;
tail = p;
} else {
tail->next = p;
tail = p;
}
}
return head;
}
//打印链表
void printList(Node *head) {
Node *p = head;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
}
int main() {
int n;
printf("请输入链表节点个数: ");
scanf("%d", &n);
printf("使用头插法创建链表: \n");
Node *head1 = createListHead(n);
printf("链表的内容为: ");
printList(head1);
printf("\n使用尾插法创建链表: \n");
Node *head2 = createListTail(n);
printf("链表的内容为: ");
printList(head2);
return 0;
}
```
使用方法:在终端输入 `gcc -o main main.c` 编译程序,然后输入 `./main` 运行程序,按照提示输入节点个数和每个节点的值即可。
阅读全文