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

网上书城网站开发的数据字典在线网站建设联系人

网上书城网站开发的数据字典,在线网站建设联系人,大数据营销方法,企业品牌策划方案函数运算算法合集02 顺序表的结构体顺序表的基本运算的实现1. 建立顺序表2. 顺序表的基本运算2.1 初始化线性表2. 2 销毁顺序表2.3 判断顺序表是否为空表2.4 求顺序表的长度2.5 输出顺序表2.6 按序号求顺序表中的元素2.7 按元素值查找2.8 插入数据元素2.9 删除数据元素 单链表的…

函数运算算法合集02

  • 顺序表的结构体
  • 顺序表的基本运算的实现
    • 1. 建立顺序表
    • 2. 顺序表的基本运算
      • 2.1 初始化线性表
      • 2. 2 销毁顺序表
      • 2.3 判断顺序表是否为空表
      • 2.4 求顺序表的长度
      • 2.5 输出顺序表
      • 2.6 按序号求顺序表中的元素
      • 2.7 按元素值查找
      • 2.8 插入数据元素
      • 2.9 删除数据元素
  • 单链表的结构体
  • 单链表的基本运算的实现
    • 1.建立单链表
      • 1.1头插法
      • 1.2尾插法
    • 2.单链表的基本运算
      • 2.1 初始化单链表
      • 2.2 销毁单链表
      • 2.3 判断单链表是否为空表
      • 2.4 求单链表的长度
      • 2.5 输出单链表
      • 2.6 按序号求单链表的元素
      • 2.7 按元素值查找
      • 2.8 插入数据元素
      • 2.9 删除元素数据
  • 双链表的结构体
  • 双链表的基本运算的实现
    • 1.建立双链表
      • 1.1头插法
      • 1.2尾插法
    • 2.双链表的基本运算
      • 2.1 插入数据元素
      • 2.2 删除数据元素

注:
本篇文章的概念合集
数据结构的概念大合集02(线性表)

顺序表的结构体

typedef struct
{ElemType data[MaxSize];int length;
} SqList;

顺序表的基本运算的实现

1. 建立顺序表

//建立顺序表
void CreatList(SqList *L,ElemType a[],int n)
{int i = 0,k = 0;L = (SqList *)malloc(sizeof(SqList));while(i<n){L->data[k] = a[i];k++ ;i++;}L->length = k;
}

2. 顺序表的基本运算

2.1 初始化线性表

//初始化线性表
void InitList(SqList *L)
{L = (SqList *)malloc(sizeof(SqList));L ->length = 0;
}

2. 2 销毁顺序表

//销毁顺序表
void DestroyList(SqList *L)
{free(L);
}

2.3 判断顺序表是否为空表

//判断顺序表是否为空表
bool ListEmpty(SqList *L)
{return(L->length == 0);
}

2.4 求顺序表的长度

//求顺序表的长度
int ListLength(SqList *L)
{return(L->length);
}

2.5 输出顺序表

//输出顺序表
void DisList(SqList *L)
{int i;for(i = 0; i < L->length; i++){printf("%d",L->data[i]);printf("\n");}
}

2.6 按序号求顺序表中的元素

//按序号求顺序表中的元素,采用bool性,即可以满足函数所需功能,还能增加复用性
bool GetElem(SqList * L,int i,ElemType *e)
{if(i < 1 || i > L->length) return false;e = L->data[i-1];return true;
}

2.7 按元素值查找

//按元素值查找
int LocateElem(SqList *L,ElemType e)
{int i;while(i < L->length && L->data[i] == e){i++;}if(i >= L->length){return 0;}else{return i+1;}
}

2.8 插入数据元素

//插入数据元素,在i位置插入元素e<==>把i后面的元素后移一个位置
bool ListInsert(SqList * L,int i,ElemType e)
{int j;if(i < 1 || i > L->length+1 || L->length == MaxSize)return false;i--;for(j = L->length; j > i; j--)  //此循环就是为了做到时i后面的元素后移一个位置{L->data[j] = L->data[j-1];};L->data[i] = e;L->length++;return true;
}

2.9 删除数据元素

//删除数据元素
bool ListDelet(SqList *L,int i,ElemType *e){int j;if(i<1 || i > L->length)return false;e = L->data[i];for(j = L->length; j >= i; j--){L->data[j-1] = L->data[j];}L->length--;return true;
}

单链表的结构体

typedef struct LNode{ElemType data;struct Lnode *next;
}LinkNode;

单链表的基本运算的实现

1.建立单链表

1.1头插法

//建立单链表——头插法
void CreatListF (LinkNode *L,ElemType a[],int n){LinkNode *s;L = (LinkNode*)malloc(sizeof(LinkNode));L->next = NULL;for(int i = 0; i < n; i++){s = (LinkNode*)malloc(sizeof(LinkNode));s->data = a[i];s->next = L->next;  //将s的后继结点始终置空,这是为了让尾结点的指针置空L->next = s;    //将头结点的指针始终指向新插入进来的元素}
}

使用头插法后,数组a里面的元素会倒置,比如a[5] = {1,2,3,4,5},头插法后,链表里面的元素是 5,4,3,2,1 ,具体原因可以多体会一下上述代码中的for循环部分。

1.2尾插法

//建立单链表——尾插法
void CreatListR(LinkNode *L,ElemType a[],int n){LinkNode *s,*r;L = (LinkNode*)malloc(sizeof(LinkNode));r = L;for(int i = 0;i < n;i++){s = (LinkNode*)malloc(sizeof(LinkNode));s->data = a[i];r->next = s;    //将r的后继结点指向sr=s;    //将s赋给r,相当于将r后移,这样,结合上行代码,就可以是元素依次插入到头结点后面,且顺序不会倒置}r -> next = NULL;   //经过循环后,r变成尾结点,此行代码,就是为了让尾指针为空
}

与头插法不同,尾插法后得到的元素不会倒置,这都是 LinkNode* r 的功能

2.单链表的基本运算

2.1 初始化单链表

void InitList(LinkNode *L)
{L = (LinkNode*)malloc(sizeof(LinkNode));L->next = NULL;
}

2.2 销毁单链表

//销毁单链表
void DestroyList(LinkNode *L)
{LinkNode *pre = L, *p = L->next;while(p!=NULL){free(pre);pre = p;p = pre->next;}free(pre);
}

2.3 判断单链表是否为空表

//判断单链表是否为空
bool ListEmpty(LinkNode *L)
{return(L->next == NULL);
}

2.4 求单链表的长度

//求链表的长度
int ListLenth(LinkNode *L)
{int n = 0;LinkNode *p;while(p != NULL){n++;p = p->next;}return n;
}

2.5 输出单链表

//输出单链表
void DispList(LinkNode *L)
{LinkNode * p = L->next;while (p != NULL){printf("%d",p->data);p=p->next;}printf("\n");
}

2.6 按序号求单链表的元素

//按序号求单链表中的元素
bool GetElem(LinkNode * L,int i,ElemType *e)
{int j = 0;LinkNode *p = L;if(i <= 0) return false;while(j < i && p != NULL){j++;p = p->next;}if(p == NULL){return false;}else{e = p->data;return true;}
}

2.7 按元素值查找

//按元素值查找
int LocateElem(LinkNode *L,ElemType e){int i = 1;LinkNode *p = L->next;while(p != NULL && p->data != e){p = p->next;i++;}if(p == NULL)return 0;elsereturn i;
}

2.8 插入数据元素

//插入数据元素
bool ListInsert(LinkNode *L,int i,ElemType e){int j = 0;LinkNode *p = L,*s;if(i <= 0) return false;while(j < i-1 && p != NULL){j++;p = p->next;}if(p == NULL){return false;}else{s = (LinkNode*)malloc(sizeof(LinkNode));s->data = e;s->next = p->next;p->next = s;return true;}
}

2.9 删除元素数据

//删除数据元素
bool listDelete(LinkNode *L,int i,ElemType *e){int j = 0;LinkNode *p = L,*q;if(i <= 0) return false;while(j < i-1 && p!= NULL){j++;p=p->next;}if(p == NULL){return false;} else {q = p->next;if(q == NULL)return false;e = q->next;p->next = q->next;free(q);return true;}
}

双链表的结构体

双链表的基本运算的实现

1.建立双链表

1.1头插法


//建立双链表——头插法
void CreatListF(DLinkNode *L, ElemType a[],int n)
{DLinkNode *s;L = (DLinkNode*)malloc(sizeof(DLinkNode));L->next = L->prior = NULL;for(int i = 0; i < n; i++){s = (DLinkNode*)malloc(sizeof(DLinkNode));  //在循环里面开辟内存,方便a[i]插入s->data = a[i];     s->next = L->next;  if(L->next != NULL)  //若 L 非空,则修改 L->next 的前驱指针{L->next->prior = s;}L->next = s;s->prior = L;}
}

1.2尾插法

//建立双链表——尾插法
void CreatListR(DLinkNode *L, ElemType a[],int n)
{DLinkNode *s,*r;L = (DLinkNode*)malloc(sizeof(DLinkNode));r = L:for(int i = 0; i < n; i++){s = (DLinkNode*)malloc(sizeof(DLinkNode));s->data = a[i];r->next = s;s->prior = r;r = s;}r->next = NULL;
}

2.双链表的基本运算

对于双链表的一些基本运算而言,比如求长度,取元素值,查找元素等与单链表相同,这里就不再展开了,但双链表的插入与删除结点就不同于单链表了,这里做详细说明

2.1 插入数据元素

//插入数据元素
bool ListInster(DLinkNode *L,int i, ElemType e)
{int j = 0;DLinkNode *p = L,*s;if (i <= 0) return false;while(j < i - 1 && p != NULL){j++;p = p->next;}if( p == NULL) return false;else{s = (DLinkNode*)malloc(sizeof(DLinkNode));s->data = e;s->next = p->next;if(p->next != NULL){p->next->prior = s;}s->prior = p;p->next = s;return true;}
}

2.2 删除数据元素

//删除数据元素
bool ListDelet(DLinkNode *L,ElemType *e)
{int j = 0;DLinkNode *p = L,*q;if(i <= 0)  return false;while(j < i-1 && p != NULL){j++;p = p->next;}if(p == NULL)  return false;else{q = p->next;if(q == NULL)    return false;e = q->data;p->next = q ->next;if(q->next != NULL)q->next->prior = p;free(q);}
}
http://www.yayakq.cn/news/957352/

相关文章:

  • 棋牌网站asp.net网站开发试题
  • 成都规划网站版面设计经历了哪几个阶段
  • 修复WordPress图片上传错误seo营销工具
  • 山东济铁工程建设集团有限公司网站品牌推广的方式
  • 东莞做网站公司首选!手机网站建设怎样
  • 网站设计步骤图深圳网络推广建站
  • 做网站推广wordpress 直达链接
  • 山东网站建设是什么wordpress 文章分类页面
  • 建站精灵网站模板链接搜索引擎
  • 网站设计的原则做网站需要好多图片
  • 北京麒麟网站建设做内贸的有哪些网站
  • 医疗知识普及网站开发wordpress 文章 顺序
  • 做企业网站价格沃尔玛网上商城官网
  • 牡丹江做网站建设做课件可赚钱的网站
  • 网站后台示演如何使用网站模板
  • 淘宝网站的内容建设北京有几个区几个县
  • 上海专业做网站公司电话龙岩网站建设设计制作
  • 库尔勒网站建设哪家好wordpress 无法邮件
  • 外贸平台哪个网站最好不收费网站建设外包兼职
  • 微信公众号优秀文案网站建设优化西安
  • 俱乐部网站php源码wordpress 小米官网主题
  • 湛江做网站建设做别人一样的网站
  • 货源网站开发wordpress get_post
  • 中小型企业网站建设与推广石家庄谁会搭建网站
  • 酷站海洛wordpress更换logo
  • 什么网站做装修的公司网站如何建设
  • 好的宠物网站模板学习软件免费
  • 设计素材网站知乎软件推广公司
  • 微九州合作网站做内部优惠券网站赚钱吗
  • 做网盟的网站必须备案wordpress自适应画廊