本题要求实现单链表的头插法和尾插法建表。 要求写出createlistf函数、 createlistr函数和displist函数。 说明:单链表带头结点。
时间: 2023-04-29 16:02:36 浏览: 173
题目要求实现单链表的头插法和尾插法建表,需要编写createlistf函数和createlistr函数,并且单链表带头结点。同时还需要编写displist函数用于输出单链表的元素。
createlistf函数实现头插法建表,即将新元素插入到链表的头部。具体实现过程为:先创建一个头结点,然后依次读入元素并插入到头结点之后。代码如下:
```
void createlistf(LinkList &L) {
L = (LinkList)malloc(sizeof(Node)); // 创建头结点
L->next = NULL; // 头结点的next指针初始化为NULL
int x;
while (scanf("%d", &x) != EOF) {
Node *p = (Node*)malloc(sizeof(Node)); // 创建新结点
p->data = x; // 将新元素赋值给新结点
p->next = L->next; // 将新结点插入到头结点之后
L->next = p;
}
}
```
createlistr函数实现尾插法建表,即将新元素插入到链表的尾部。具体实现过程为:先创建一个头结点,然后依次读入元素并插入到链表的尾部。代码如下:
```
void createlistr(LinkList &L) {
L = (LinkList)malloc(sizeof(Node)); // 创建头结点
L->next = NULL; // 头结点的next指针初始化为NULL
Node *tail = L; // tail指向链表的尾部
int x;
while (scanf("%d", &x) != EOF) {
Node *p = (Node*)malloc(sizeof(Node)); // 创建新结点
p->data = x; // 将新元素赋值给新结点
p->next = NULL; // 新结点的next指针初始化为NULL
tail->next = p; // 将新结点插入到链表的尾部
tail = p; // 更新tail指针
}
}
```
displist函数用于输出单链表的元素,具体实现过程为:从头结点的下一个结点开始遍历链表,依次输出每个结点的元素。代码如下:
```
void displist(LinkList L) {
Node *p = L->next; // p指向链表的第一个结点
while (p != NULL) {
printf("%d ", p->data); // 输出当前结点的元素
p = p->next; // 将p指针移动到下一个结点
}
printf("\n"); // 输出换行符
}
```
阅读全文