哪里可以找到提供区块链网站开发和服务器托管的服务商?
摘要:区块链网站开发价格,哪里有网站开发服务器,做图的模板下载网站有哪些内容,免费建网站讨论一、什么是链表 链表是一种链状数据结构。简单来说,要存储的数据在内存中分别独立存放,它们之间通
区块链网站开发价格,哪里有网站开发服务器,做图的模板下载网站有哪些内容,免费建网站讨论一、什么是链表 链表是一种链状数据结构。简单来说#xff0c;要存储的数据在内存中分别独立存放#xff0c;它们之间通过某种方式相互关联。 如果我们使用C语言来实现链表#xff0c;需要声明一个结构体作为链表的结点#xff0c;结点之间使用指针关联。 二、单向链表的结… 一、什么是链表 链表是一种链状数据结构。简单来说要存储的数据在内存中分别独立存放它们之间通过某种方式相互关联。 如果我们使用C语言来实现链表需要声明一个结构体作为链表的结点结点之间使用指针关联。 二、单向链表的结构 单向链表的每个结点内都有一个指针指向下一个结点从而把所有结点串联起来。由于只有指向下一个结点的指针这种结构是单向的也就是前面的结点能找到后面的但后面的结点找不到前面的这就存在一定的问题。最后一个结点的指针是空指针标识链表的尾结点。我们只需要获取链表头部的结点的地址也就是指向链表头结点的指针就能依次找到后面的每一个结点从而管理整个链表。 说了这么多链表的每个结点应该如何定义呢很简单每个结点应该有存储数据的变量数据域和指向下一个结点的指针指针域。我们假设存储的数据类型是int。
struct SListNode
{int data;struct SListNode* next;
}; 如果要存储其他类型的数据为了修改方便可以使用typedef把int类型typedef成SLTDataType从而方便修改存储类型。
typedef int SLTDataType; 为了结构体使用方便也typedef一下。
typedef struct SListNode
{int data;struct SListNode* next;
}SLTNode; 三、打印、查找、销毁 这三个动作都要涉及一个知识点如何遍历单链表为了遍历单链表我们需要获取指向链表头结点的指针以下简称头指针。假设我们已经获取了这个指针phead每次我们都可以通过结点内的next指针找到下一个结点直到找到尾结点即next指针为NULL的结点。为此可以使用for循环遍历。
for (SLTNode* cur phead; cur; cur cur-next)
{// ...
} 打印每个结点的数据就简单了。
for (SLTNode* cur phead; cur; cur cur-next)
{printf(%d-, cur-data);
}
printf(NULL\n); 查找链表中的数据也是依次遍历即可。
for (SLTNode* cur phead; cur; cur cur-next)
{if (cur-data x)return cur;
}return NULL; // 找不到 如果要销毁链表由于我们一般把结点都存储在栈上所以使用free函数来释放空间。注意如果结点的空间被释放nextz指针就成为了野指针就找不到下一个结点了。所以遍历时应该保存要释放的结点先让cur指向next再free掉保存的结点。
for (SLTNode* cur phead; cur; )
{SLTNode* del cur;cur cur-next;free(del);
} 四、尾插、头插 如果要插入一个结点我们需要先获取一个结点前面说了一般在堆上管理结点所以使用malloc函数开辟结点。
SLTNode* newnode (SLTNode*)malloc(sizeof(SLTNode));
if (newnode NULL)
{perror(malloc申请空间失败);exit(-1);
}
newnode-data x;
newnode-next NULL; 有了newnode之后需要把newnode和原链表关联起来。 先说尾插我们需要找到尾结点再让尾结点的next指向newnode。找尾结点非常简单遍历链表即可只不过当cur-next为NULL时就找到了。
SLTNode* tail phead;
for (; tail-next; tail tail-next)
{;
}
tail-next newnode; 但是上面的代码有一个严重的问题你看出来了吗代码中有tail-next的操作也就是要对tail指针解引用然而万一tail为NULL呢tail为NULL说明phead为空我们称链表phead为空的情况为空链表也就是说一上来链表为空时尾插就不能采取上面的方法。 该怎么办呢你想想此时链表里啥都没有空空如也只需要让phead指向newnode不就行了吗
if (phead NULL)phead newnode; 一般来说了解到这就足够了。
