当前位置: 首页 > news >正文

枣庄专业做网站中国交通建设监理协会网站

枣庄专业做网站,中国交通建设监理协会网站,做网站需要花费那方面的钱,学风网站建设今天懒洋洋学习了关于基础数据结构有关单链表的相关操作#xff0c;懒洋洋来这温习一下。一:单链表的定义链表定义#xff1a;用链式存储的线性表统称为链表#xff0c;即逻辑结构上连续#xff0c;物理结构上不连续。链表分类#xff1a;单链表、双链表、循环链表、静态链… 今天懒洋洋学习了关于基础数据结构有关单链表的相关操作懒洋洋来这温习一下。一:单链表的定义链表定义用链式存储的线性表统称为链表即逻辑结构上连续物理结构上不连续。链表分类单链表、双链表、循环链表、静态链表二:单链表的实现 1:定义结构体typedef int SLQDataType;//利用typedef将intSLQDataType struct SListNode {SLQDataType data;//定义节点的数据域struct SListNode * next;//定义节点的指针域 }; //重命名结构体 typedef struct SListNode SLNode;2:初始化单链表SLNode * phead NULL;//即直接将头指针置为空。3:后插法插入元素 划重点:由于我们在定义的变量即phead为一级指针此时我们要对单链表里面的元素进行改变即对单链表做出更改我们要传入一级指针的地址再利用二级指针进行接受。 SListPushBack(phead, 2);SListPushBack(phead, 3);SListPushBack(phead, 4); 后插法插入元素代码实现:(在插入元素的时候要进行分类当单链表里面没有元素的时候我们将为要插入的元素利用malloc库对新的元素进行分配空间再直接将定义的newNode赋值给*pphead)//BuySListNode函数实现 SLNode* BuySListNode(SLQDataType x) {//申请空间SLNode* newNode (SLNode*)malloc(sizeof(SLNode));if (newNode NULL){printf(申请节点失败\n);return;}newNode-data x;newNode-next NULL;return newNode; }void SListPushBack(SLNode**pphead, SLQDataType x) {if (*pphead NULL){*pphead BuySListNode(x);}else{//定义一个结构体指针指向头结点的指针判断tail-next是否为NULL要是为NULL的话//将新的结点的地址即赋值给tail-next.再将newNode-nextNULLSLNode* tail *pphead;while (tail-next ! NULL){tail tail-next;}tail-next BuySListNode(x);} }4:后删法删除元素 1:当单链表里面没有元素的时候直接结束函数 2:当单链表里面只有一个结点的时候需要判断if(*pphead-nextNULL)再释放掉空间 3:当有一个结点以上时利用tail-nextNULL找到末尾的节点再利用一个指针(2)指向tail的前一个结点再将前一个结点的nextNULL,释放掉tail的空间)void SListPopBack(SLNode** pphead) {//空if (*pphead NULL){return;}//一个结点else if ((*pphead)-next NULL){free(*pphead);}//一个以上结点else{//用两个指针进行标记一个标记下一个是否为NULL//另一个指针标记前一个指针的前一个位置SLNode* tail *pphead;SLNode* pre NULL;while (tail-next ! NULL){pre tail;tail tail-next;}free(tail);tail NULL;pre-next NULL;} }5:头插法插入元素 我们创建新的结点将newNode的next指向头结点再将newNode赋值给*phead; void SListPushFront(SLNode**pphead, SLQDataType x) {SLNode* newNode BuySListNode(x);newNode-next *pphead;*pphead newNode; }6:头删法删除元素 1:当单链表里面没有元素的时候直接结束函数 2:当单链表里面只有一个结点的时候需要判断if(*pphead-nextNULL)再释放掉空间 3:当有一个结点以上时创建临时的指针保存头指针所指向的下个结点的地址即next(*phead)-next释放掉头指针的空间和地址再将创建的临时的指针变成头指针即*pheadnext;void SListPopFront(SLNode** pphead) {if (*pphead NULL){return;}else if ((*pphead)-next NULL){free(*pphead);*pphead NULL;}else{//先找到下一个结点用指针保存起来再释放掉前面SLNode* next (*pphead)-next;free(*pphead);*pphead next;} }7:查找单链表元素 思路:循环遍历SLNode* SListFind(SLNode* phead, SLQDataType x) {{SLNode* cur phead;while (cur ! NULL){if (cur-data x){return cur;}cur cur-next;}return NULL;} }8:随机位置插入和删除void SListInsertAfter(SLNode* ps, SLQDataType x) {BuySListNode(x)-next ps-next;ps-next BuySListNode(x); } void SListEraseAfter(SLNode* ps) {SLNode* next ps-next;ps-next next-next;free(ps); } 9:打印单链表的各个元素void PrintSList(SLNode* phead) {SLNode* cur phead;while (cur ! NULL){printf(%d- , cur-data);cur cur-next;}printf(NULL); }10:主函数及部分功能实现#include SList.h void test() {//将头指针置为空SLNode * phead NULL;//后插法插入元素SListPushBack(phead, 2);SListPushBack(phead, 3);SListPushBack(phead, 4);//后删法删元素SListPopBack(phead);//头插法增加元素SListPushFront(phead, 5);//头删法删除元素SListPopFront(phead);PrintSList(phead); }int main() {test(); }今天懒洋洋的学习之路就到这了感谢羊村的各位捧场!!!
http://www.w-s-a.com/news/865527/

相关文章:

  • 百中搜如何做网站排名网站维护一年一般多少钱
  • 镇江地区做网站的公司wordpress说说加分类
  • 深圳高端网站设计免费的关键词优化软件
  • 视频网站公司沈阳网站建设服务
  • 网站全屏代码做网站必须用对方服务器
  • 网站速度慢wordpressssl正式申请后wordpress
  • 那个网站做玉石最专业西瓜创客少儿编程加盟
  • 备案时的网站建设方案书免费软件库
  • 惠州外贸网站建设网站模板 兼容ie8
  • 南京淄博网站建设方案php网站开发实训感想
  • 网站设计的含义只做恐怖片的网站
  • 网站改版方案ppt室内装修公司简介
  • 做色网站wordpress twenty ten
  • 马鞍山建设工程监督站建管处网站免费的海报模板网站
  • 类似百度的网站移动端的网站怎么做的
  • 网站开发需要什么文凭网站分析的优劣势
  • 海尔网站建设不足之处山东网站营销
  • 楚雄 网站建设广告设计一般人能学吗
  • 热搜榜排名前十山东seo多少钱
  • 衡水哪有建网站的吗企业信息系统英文
  • 有模板怎么建站wordpress媒体库图片路径
  • 怎么做网站h汉狮企业网站营销的实现方式
  • 新津县建设局网站怎么做区块链网站
  • 网站设计与制作是什么专业广州优化网站
  • 腾讯有做淘宝客网站吗网站开发包
  • 网站整体营销方案网站建设百度贴吧
  • 宣传式网站养生网站模板
  • 临猗网站建设天津做网站哪家服务好
  • 郑州做网站九零后用织梦建设网站的步骤
  • 莱芜网站优化加徽信xiala5江都网站制作