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

太原手机网站设计免费申请空间的地址有哪些

太原手机网站设计,免费申请空间的地址有哪些,用安卓做网站,局域网内网站建设单链表操作详解&#xff08;C实现&#xff09; 目录 单链表尾插法创建单链表头插法创建删除指定节点按值查找按序号查找插入节点完整代码示例注意事项总结 尾插法创建 #include<bits/stdc.h> using namespace std;typedef struct LNode {int data;struct LNode* next;…

单链表操作详解(C++实现)

目录

  1. 单链表尾插法创建
  2. 单链表头插法创建
  3. 删除指定节点
  4. 按值查找
  5. 按序号查找
  6. 插入节点
  7. 完整代码示例
  8. 注意事项
  9. 总结

尾插法创建

#include<bits/stdc++.h>
using namespace std;typedef struct LNode {int data;struct LNode* next;
} LNode, *LinkList;// 尾插法创建单链表
void List_TailInsert(LinkList& L) {L = (LNode*)malloc(sizeof(LNode));L->next = NULL;             // 创建头节点LNode* S, * r = L;          // r始终指向尾节点int X;cin >> X;while (X != 9999) {         // 输入9999时停止S = (LNode*)malloc(sizeof(LNode));r->next = S;            // 将新节点接在尾节点后r = S;                  // 更新尾节点指针S->next = NULL;         // 新节点的next置空S->data = X;            // 存入数据cin >> X;}
}// 打印链表
void List_Print(LinkList L) {cout << "当前链表:" << endl;LNode* P = L->next;while (P != NULL) {cout << P->data << " ";P = P->next;}cout << endl;
}int main() {LinkList L;List_TailInsert(L);List_Print(L);return 0;
}

代码说明
• 时间复杂度:O(n)
• 特点:新节点插入链表尾部,输入顺序与链表顺序一致
• 要点:维护尾指针r,每次插入后更新r


头插法创建

#include<bits/stdc++.h>
using namespace std;typedef struct LNode {int data;struct LNode* next;
} LNode, *LinkList;// 头插法创建单链表
void List_HeadInsert(LinkList& L) {LNode* S; int X;L = (LNode*)malloc(sizeof(LNode));L->next = NULL;             // 创建头节点cin >> X;while (X != 9999) {         // 输入9999时停止S = (LNode*)malloc(sizeof(LNode));S->next = L->next;      // 新节点指向原首节点L->next = S;            // 头节点指向新节点S->data = X;            // 存入数据cin >> X;}
}// 打印链表
void PrintList(LinkList L) {LNode* p = L->next;while (p != NULL) {printf("%d ", p->data);p = p->next;}printf("\n");
}int main() {LinkList L = NULL;List_HeadInsert(L);PrintList(L);return 0;
}

代码说明
• 时间复杂度:O(n)
• 特点:新节点插入链表头部,输入顺序与链表顺序相反
• 要点:每次插入后修改头节点的next指针


删除指定节点

// 删除指定节点p(非尾节点)
bool DeleteNode(LNode* p) {if (p == NULL || p->next == NULL) // 空节点或尾节点无法删除return false;LNode* q = p->next;         // 获取后继节点p->data = q->data;          // 数据域替换p->next = q->next;          // 指针域跳过qfree(q);                    // 释放内存return true;
}

代码说明
• 时间复杂度:O(1)
• 限制:无法删除最后一个节点
• 特点:通过复制后继节点数据实现伪删除


按值查找

// 按值查找并返回位置
LNode* LocateElem(LinkList L, int e, int& Locate) {LNode* P = L->next;Locate = 1;while (P != NULL && P->data != e) {P = P->next;Locate++;}if (P == NULL) Locate = -1; // 未找到标记-1return P;
}/* 调用示例 */
int main() {// ...(初始化链表)int Locate = -1, e;cin >> e;LNode* K = LocateElem(L, e, Locate);if (K != NULL) {cout << "找到元素:" << K->data << " 位置:" << Locate;} else {cout << "元素未找到";}
}

按序号查找

// 按序号查找元素
bool List_LocateFind(LinkList L, int loc) {if (loc < 1) return false;LNode* p = L->next;int K = 1;while (p != NULL && K < loc) {p = p->next;++K;}if (p == NULL) return false;cout << "位置" << loc << "的元素为:" << p->data;return true;
}

插入节点

// 带头节点的插入(位置从1开始)
bool List_Insert1(LinkList& L, int i, int e) {if (i < 1) return false;LNode* P = L;int j = 0;while (P != NULL && j < i-1) { // 找到i-1位置P = P->next;++j;}if (P == NULL) return false;LNode* S = (LNode*)malloc(sizeof(LNode));S->data = e;S->next = P->next;P->next = S;return true;
}// 不带头节点的插入
bool List_Insert2(LinkList& L, int i, int e) {if (i < 1) return false;if (i == 1) { // 特殊处理第一个节点LNode* S = (LNode*)malloc(sizeof(LNode));S->data = e;S->next = L;L = S;return true;}// 其他位置与带头节点操作相同// ...(后续代码类似带头节点情况)
}

注意事项

  1. 内存管理:每次malloc后需对应free
  2. 边界处理:特别注意头节点和尾节点的操作
  3. 时间复杂度:
    • 查找操作:O(n)
    • 插入/删除:O(1)(已知前驱时)
  4. 输入约定:示例中使用9999作为终止输入标记

总结

操作时间复杂度要点
头插法O(n)维护头指针
尾插法O(n)维护尾指针
按值查找O(n)遍历比较
按序号查找O(n)计数器控制
节点插入O(n)找到前驱节点修改指针
节点删除O(1)需要前驱节点或特殊处理

单链表适合频繁插入删除的场景,但随机访问效率较低。理解指针操作是掌握链表的关键,建议通过画图辅助理解指针变化过程。


文章转载自:

http://LrSkFhY9.Ljyqn.cn
http://Gae1ujWf.Ljyqn.cn
http://Y6hU718G.Ljyqn.cn
http://W9Q2z1wl.Ljyqn.cn
http://m1il3pXP.Ljyqn.cn
http://QzAOeLkh.Ljyqn.cn
http://Vy6TmwPr.Ljyqn.cn
http://dGJu9hjb.Ljyqn.cn
http://0AR20BCd.Ljyqn.cn
http://Baq9Ywax.Ljyqn.cn
http://2hlZ2Bsc.Ljyqn.cn
http://4c5PhJeE.Ljyqn.cn
http://SNlNgrH9.Ljyqn.cn
http://y1r2Vw1s.Ljyqn.cn
http://g2YsednM.Ljyqn.cn
http://ldhItR5f.Ljyqn.cn
http://vSMtVJoU.Ljyqn.cn
http://E8x5zT2P.Ljyqn.cn
http://VKi5jteb.Ljyqn.cn
http://Y5445pgb.Ljyqn.cn
http://K4EE9iqV.Ljyqn.cn
http://lgNXtZrp.Ljyqn.cn
http://JVF0cLz0.Ljyqn.cn
http://bV1Szpzu.Ljyqn.cn
http://sUcDio8a.Ljyqn.cn
http://EtKlJU6e.Ljyqn.cn
http://K91Oc9Ow.Ljyqn.cn
http://RryT3xSX.Ljyqn.cn
http://i8A9P2QF.Ljyqn.cn
http://iiwDIeQX.Ljyqn.cn
http://www.dtcms.com/wzjs/701858.html

相关文章:

  • 招远市建设局网站wordpress主体
  • 咸阳做网站xymokj中英文网站怎么做
  • 网站设计销售营销系统网站源码
  • 高端网站登录入口网络的推广
  • 广东网站建设公海康打开网站显示建设中
  • 开发一整个网站要多久wordpress 普通文本 quot
  • 网站先做移动站在做pc站可行吗网站建设对旅游意义
  • 网站开发公司怎么查网站推广有哪些举措
  • 保定 网站建设软件开发网站制作不用备案
  • 建站的好公司做移动网站优化软
  • 深圳高端网站建设费用发广告平台有哪些免费
  • hao123网站源码制作2015最新仿网页设计对板式的要求
  • 做教育行业营销类型的网站北京朝阳网站建设公司
  • 网站怎么做数据库定制旅游哪个网站好用
  • 浙江专业网页设计免费建站网站怎样做微信公众号
  • wordpress更改站点名称小程序推广方式
  • 制作网页的过程中可以单击什么标签显示网页效果seo入门课程
  • 自己做简单网站价格上海建设摩托车官方网站
  • 绍兴市交通建设有限公司网站做网站是什么时候分页
  • 在什么网站上兼职做加工中心编程室内设计软件哪个比较好
  • 罗湖做网站报价开发公司总经理管理方案
  • 湖北企业建站系统平台集团网站建设定制网站建设
  • 做织梦网站的心得体会org.wordpress utils
  • 国际站wap端流量泰州制作公司网站
  • 网站美工培训佛山做网站建设公司
  • 同城购物网站建设网页设计实训报告怎么写
  • 机械网站建设方案湖南门户网站建设
  • 网站平台建设成本个人网站需不需要备案
  • 怎么做360网站新建网站如何做关键词
  • 站长工具是干嘛的免费网站建设阿里云