设L为链表指针,分别写出有无头节点时插入节点p的运算
时间: 2023-06-26 18:10:06 浏览: 46
有头节点时插入节点p的运算:
1. 将p的next指向头节点的下一个节点
2. 将头节点的next指向p
```
p->next = L->next;
L->next = p;
```
无头节点时插入节点p的运算:
1. 将p的next指向当前节点的下一个节点
2. 将当前节点的next指向p
```
p->next = cur->next;
cur->next = p;
```
相关问题
用C语言写出带表头结点单链表的逆置和排序运算的代码
好的,以下是用C语言实现带表头结点单链表的逆置和排序运算的代码:
```
#include <stdio.h>
#include <stdlib.h>
/* 定义链表节点结构体 */
typedef struct Node
{
int data; // 数据域
struct Node *next; // 指针域
} Node;
/* 创建带表头结点的单链表 */
Node *createLinkedList(int n)
{
Node *head = (Node *)malloc(sizeof(Node));
head->next = NULL;
Node *p = head;
int i;
for (i = 0; i < n; i++)
{
Node *node = (Node *)malloc(sizeof(Node));
printf("请输入第%d个节点的数据:", i + 1);
scanf("%d", &node->data);
node->next = NULL;
p->next = node;
p = node;
}
return head;
}
/* 输出单链表 */
void printLinkedList(Node *head)
{
Node *p = head->next;
while (p != NULL)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
/* 单链表逆置 */
void reverseLinkedList(Node *head)
{
Node *p = head->next;
head->next = NULL;
while (p != NULL)
{
Node *tmp = p;
p = p->next;
tmp->next = head->next;
head->next = tmp;
}
}
/* 单链表排序 */
void sortLinkedList(Node *head)
{
Node *p, *q;
int tmp;
for (p = head->next; p != NULL; p = p->next)
{
for (q = p->next; q != NULL; q = q->next)
{
if (p->data > q->data)
{
tmp = p->data;
p->data = q->data;
q->data = tmp;
}
}
}
}
int main()
{
int n;
printf("请输入链表长度:");
scanf("%d", &n);
Node *head = createLinkedList(n);
printf("原始链表:");
printLinkedList(head);
reverseLinkedList(head);
printf("逆置后的链表:");
printLinkedList(head);
sortLinkedList(head);
printf("排序后的链表:");
printLinkedList(head);
return 0;
}
```
以上代码实现了带表头结点单链表的逆置和排序运算。输入链表长度和各个节点的数据,然后输出原始链表、逆置后的链表和排序后的链表。
头歌基于链表的两个一元多项式的基本运算
基于链表的两个一元多项式的基本运算包括加法、减法、乘法和求导运算。具体步骤如下:
加法运算:
1. 创建一个新的空链表来存储结果。
2. 从两个多项式的头节点开始,依次比较两个多项式的指数大小。
3. 如果两个多项式的指数相等,则将它们的系数相加,并将结果插入到结果链表中。
4. 如果两个多项式的指数不相等,则将指数较大的项插入到结果链表中,并向下移动指针。
5. 当其中一个多项式的指针到达尾部时,将另一个多项式的剩余项依次插入结果链表中。
6. 返回结果链表。
减法运算:
1. 创建一个新的空链表来存储结果。
2. 从两个多项式的头节点开始,依次比较两个多项式的指数大小。
3. 如果两个多项式的指数相等,则将它们的系数相减,并将结果插入到结果链表中。
4. 如果两个多项式的指数不相等,则将指数较大的项插入到结果链表中,并向下移动指针。
5. 当其中一个多项式的指针到达尾部时,将另一个多项式的剩余项的系数取相反数插入结果链表中。
6. 返回结果链表。
乘法运算:
1. 创建一个新的空链表来存储结果。
2. 遍历第一个多项式的每一项,依次与第二个多项式的每一项相乘。
3. 将乘积的系数相加,并将结果插入到结果链表中,指数为两项指数的和。
4. 返回结果链表。
求导运算:
1. 创建一个新的空链表来存储结果。
2. 遍历多项式的每一项,将每一项的系数乘以指数,并将指数减一。
3. 将结果插入到结果链表中。
4. 返回结果链表。