ypedef struct LNode{ int data; struct LNode *next; }*LinkList; 按要求编写以下各函数模块: (1)构造出一个空的单链表L; (2)将值33,24,231,3,11依次链入L中; (3)求链表L的长度; (4)将值为10的结点插入到L中的第3个位置,作为链表L中的第三个结点存在; (5)在L首端插入值为25 的结点; (6)删除L中第4个位置的结点; (7)查找L中第5个位置结点的值; C语言
时间: 2023-02-06 18:51:55 浏览: 274
下面是实现上述功能的代码:
(1)构造出一个空的单链表L;
LinkList CreateLinkList()
{
// 创建一个头结点,并返回头结点的指针
LinkList head = (LinkList)malloc(sizeof(LNode));
head->next = NULL;
return head;
}
(2)将值33,24,231,3,11依次链入L中;
void InsertLinkList(LinkList L, int data)
{
// 创建新的结点
LinkList newNode = (LinkList)malloc(sizeof(LNode));
newNode->data = data;
// 将新结点插入到L的末尾
LinkList p = L;
while (p->next != NULL)
{
p = p->next;
}
p->next = newNode;
newNode->next = NULL;
}
调用方式:
LinkList L = CreateLinkList();
InsertLinkList(L, 33);
InsertLinkList(L, 24);
InsertLinkList(L, 231);
InsertLinkList(L, 3);
InsertLinkList(L, 11);
(3)求链表L的长度;
int GetLinkListLength(LinkList L)
{
int length = 0;
LinkList p = L->next; // 从第一个结点开始遍历
while (p != NULL)
{
length++;
p = p->next;
}
return length;
}
(4)将值为10的结点插入到L中的第3个位置,作为链表L中的第三个结点存在;
void InsertNodeToLinkList(LinkList L, int data, int pos)
{
// 判断插入位置是否合法
if (pos < 1 || pos > GetLinkListLength(L) + 1)
{
printf("插入位置不合法\n");
return;
}
// 创建新的结点
LinkList newNode = (LinkList)malloc(sizeof(LNode));
newNode->data = data;
// 将新结点插入到L的第pos个位置
阅读全文