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

电子商务网站建设与维护期末答案网站改版 理论

电子商务网站建设与维护期末答案,网站改版 理论,wordpress邮件验证码确认,福州做网站软件目录 前言 一、顺序表的优缺点 二、单链表的表示和实现 1.初始化 2.清空表 3.销毁 4.表长 5.表空 6.获取表中的元素 7.下标 8.直接前驱 9.直接后继 10.插入 11.删除 12.遍历链表 13.测试代码 前言 这篇博客主要介绍单链表的表示和实现。 一、顺序表的优缺点 线…

目录

前言

一、顺序表的优缺点

二、单链表的表示和实现

1.初始化

2.清空表

3.销毁

4.表长

5.表空

6.获取表中的元素

7.下标

8.直接前驱

9.直接后继

10.插入

11.删除

12.遍历链表

13.测试代码


前言

    这篇博客主要介绍单链表的表示和实现。

一、顺序表的优缺点

        线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中任一元素,它的存储位置可用一个简单直观的公式来表示。当然这种存储结构也存在弱点:在作插入或删除操作时,需移动大量元素。      

二、单链表的表示和实现

        单链表的两个要素:数据域,指针域。其中数据域表示的是当前结点的数据,指针域指向的下一个结点的地址。

        单链表的定义如下:

// - - - - - 线性表的单链表存储结构 - - - - -
typedef int ElemType;
typedef int Staus;
typedef struct LNode {ElemType data;          // 数据域struct LNode *next;     // 指针域
} LNode, *LinkList;

1.初始化

// 链表初始化
Staus initLinkList(LinkList &linkList) {linkList = new LNode;   // 创建头结点if (!linkList) {        // 内存分配失败return false;}linkList->next = nullptr; // 头结点的指针域置空return true;
}

2.清空表

        遍历单链表,置空指针

// 清空链表
void clearLinkList(LinkList &linkList) {LinkList p, q;p = linkList->next;while (p) {q = p;p = p->next;delete q;}linkList->next = nullptr;
}

3.销毁

// 销毁链表
void destroyLinkList(LinkList &linkList) {clearLinkList(linkList);delete linkList;linkList = nullptr;
}

4.表长

// 表长
int linkListLength(LinkList &link){LNode * p =  link->next;int len = 0;while (p) {p = p->next;len++;}return len;
}

5.表空

// 表空
Status linkListEmpty(LinkList &link){return linkListLength(link) == 0;
}

6.获取表中的元素

// 获取表中的元素
Status getElemLinkList(LinkList &link,int pos,ElemType * element){if (pos < 1|| pos > linkListLength(link)) {return 0;}LinkList p = link->next;int j = 1;while (p && j < pos) {p = p ->next;++j;}if (!p ||j > pos) {return 0;}*element = p->data;return 1;
}

7.下标

// 获取数据元素element下标
Status getLocateinkList(LinkList &link,ElemType element,int * location){LinkList p = link->next;int j = 1;while (p) {if (p->data == element) {* location = j;return 1;}p = p ->next;++j;}return 0;
}

8.直接前驱

// 直接前驱
Status priorElemLinkList(LinkList &link,ElemType current,ElemType * priorElement){LinkList p = link->next;LinkList head = link;int j = 1;while (p) {if (p->data == current) {//找到数据元素if (j > 1) {* priorElement = head->data;return 1;}}p = p ->next;head = head->next;++j;}return 0;
}

9.直接后继

// 直接后继
Status nextElemLinkList(LinkList &link,ElemType current,ElemType * nextElement){LinkList p = link->next;while (p) {if (p->data == current) {//找到数据元素if (p -> next != nullptr) {* nextElement = p->next->data;return 1;}}}return 0;
}

10.插入

// 单链表插入
Status insertLinkList(LinkList &head, int pos, int element) {if (pos < 1) {      // 位置非法return 0;}LinkList p = head;int j = 0;while (p && j < pos - 1) {p = p->next;++j;}if (!p || j > pos - 1) {return 0;}LinkList q = new LNode; // 生成新节点if (!q) {               // 内存分配失败return 0;}q->data = element;q->next = p->next;p->next = q;return 1;
}

11.删除

// 单链表删除
Status deleteLinkList(LinkList &head, int pos) {if (pos < 1 || !head->next) {  // 位置非法或空链表return false;}LinkList p = head;int j = 0;while (p->next && j < pos - 1) { // 找到要删除结点的前一个结点p = p->next;++j;}if (!p->next || j > pos - 1) {   // 删除位置超出范围return false;}LinkList q = p->next;   // 要删除的结点p->next = q->next;      // 前一个结点指向后一个结点delete q;               // 释放删除结点的内存return true;
}

12.遍历链表

// 遍历链表
void traverseList(LinkList linkList) {LinkList p = linkList->next;while (p) {cout << p->data << " ";p = p->next;}cout << endl;
}

13.测试代码

void testLinkList(void){LinkList myList;if (!initLinkList(myList)) {cout << "链表初始化失败!" << endl;}cout<<"表长:"<<linkListLength(myList)<<endl;int values[] = {1, 2, 3, 4, 5};int size = sizeof(values) / sizeof(values[0]);if (!createLinkList(myList, values, size)) {cout << "创建链表失败!" << endl;destroyLinkList(myList); // 避免内存泄漏}cout << "链表元素:";traverseList(myList);cout<<"表长:"<<linkListLength(myList)<<endl;cout << "获取某个位置的数据元素"<<endl;for (int i = -1; i <= 6; i++) {int element;if (getElemLinkList(myList, i, &element)) {cout<<"第"<<i<<"个数据元素获取成功,数据元素为:"<<element<<"\t"<<endl;}else{cout<<"第"<<i<<"个数据元素获取失败!"<<endl;}}cout<<endl;cout << "获取单链表数据元素下标"<<endl;for (int i = -1; i <= 6; i++) {int locate;if (getLocateinkList(myList, i, &locate)) {cout<<"数据元素"<<i<<"下标获取成功,下标为:"<<locate<<"\t"<<endl;}else{cout<<"数据元素"<<i<<"下标获取失败!"<<endl;}}cout<<endl;cout << "获取单链表数据元素直接前驱"<<endl;for (int i = -1; i <= 6; i++) {int element;if (priorElemLinkList(myList, i, &element)) {cout<<"数据元素"<<i<<"直接前驱为:"<<element<<"\t"<<endl;}else{cout<<"数据元素"<<i<<"没有直接前驱!"<<endl;}}// 插入元素int insertPos = 3;int insertElement = 10;if (!insertLinkList(myList, insertPos, insertElement)) {cout << "插入元素失败!" << endl;destroyLinkList(myList); // 避免内存泄漏}cout << "插入后的链表元素:";traverseList(myList);// 删除元素int deletePos = 2;if (!deleteLinkList(myList, deletePos)) {cout << "删除元素失败!" << endl;destroyLinkList(myList); // 避免内存泄漏}cout << "删除后的链表元素:";traverseList(myList);// 清空链表clearLinkList(myList);cout << "链表已清空!" << endl;// 销毁链表destroyLinkList(myList);cout << "链表已销毁!" << endl;
}
http://www.yayakq.cn/news/587400/

相关文章:

  • 来宾网站制作开设购物网站的方案
  • 贸易网站建站网店产品seo如何优化
  • 网站备案是先做网站上线还是寮步营销型网站建设
  • 现在建网站还能赚钱吗网站版块设计教程
  • 深圳网站设计网站建设哪个好免费招聘网站哪个好
  • 能够沟通业务的网站怎么做火短视频网站
  • 网站建设的策划方案能源公司网站建设
  • 太原营销网站建设制作平台上海装修公司口碑哪家好
  • 深圳网站建设网络企业推广平台排行榜
  • 访问一个网站的全过程黑镜主题1.0wordpress
  • 摩托车建设网站免费建网站哪个网好
  • html网站制作答辩ppt网络安全设计方案
  • 网站内链工作做足wordpress会员登录查询
  • 大型销售网站建设一天赚1000块钱的游戏
  • 网站建设免费按词收费蓝色机械营销型网站
  • 建设企业网站开发公司义乌论坛网站建设
  • 百度制作的wordpress工具汕头自动seo
  • discuz 网站备案信息代码国外域名网站推荐
  • 企业网站制作怎么做天津网站推广优化
  • 公司常用网站开发软件怎么做自己优惠券网站
  • 临沂外贸网站凡科建站多少钱
  • c语言做网站吗物联网软件开发平台
  • 优秀专题网站茶叶公司网站的建设
  • 北京专业网站制作流程优势大学生为什么不去中建
  • 哪个网站做美食自媒体更好品牌营销案例分析
  • 大连外贸建站手机立体房屋设计软件
  • 惠州免费建站模板织梦做的网站怎么样
  • c 网站开发引擎链接搜索引擎
  • 椒江做国际网站的公司视频优化是什么意思
  • pc 手机自适应网站用什么做旅游主题 wordpress