用C语言设计头插法建立带头结点的单链表的函数,测试并输出链表中的元素。 请设计尾插法建立带头结点的单链表的函数,测试并输出链表中的元素。 答题时给出函数代码及测试代码,贴上运行结果截图,可以全部代码写在一个源程序中完成。不要使用教材上定义的基本操作函数,不使用头文件。
时间: 2024-04-30 07:23:17 浏览: 102
单链表建立头插法(C语言源代码)
头插法建立带头结点的单链表的函数:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
void createListHead(Node *head, int n) {
int i;
for (i = 0; i < n; i++) {
Node *p = (Node*)malloc(sizeof(Node));
scanf("%d", &(p->data));
p->next = head->next;
head->next = p;
}
}
void printList(Node *head) {
Node *p = head->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
Node *head = (Node*)malloc(sizeof(Node));
head->next = NULL;
int n;
scanf("%d", &n);
createListHead(head, n);
printList(head);
return 0;
}
```
测试代码:
```
输入:
5
1 2 3 4 5
输出:
5 4 3 2 1
```
尾插法建立带头结点的单链表的函数:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
void createListTail(Node *head, int n) {
int i;
Node *tail = head;
for (i = 0; i < n; i++) {
Node *p = (Node*)malloc(sizeof(Node));
scanf("%d", &(p->data));
p->next = NULL;
tail->next = p;
tail = p;
}
}
void printList(Node *head) {
Node *p = head->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
Node *head = (Node*)malloc(sizeof(Node));
head->next = NULL;
int n;
scanf("%d", &n);
createListTail(head, n);
printList(head);
return 0;
}
```
测试代码:
```
输入:
5
1 2 3 4 5
输出:
1 2 3 4 5
```
阅读全文