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

线性表的顺序和链式存储

顺序

#include<iostream>
#define MaxSize 50
using namespace std;
typedef int elemType;
//初始化线性表
typedef struct
{int length;elemType date[MaxSize];
}SqList;//建立顺序表
void CreateList(SqList*& L, elemType a[], int n)
{int i = 0, k = 0;L =(SqList *) malloc(sizeof(SqList));while (i < n){L->date[k] = a[i];k++, i++;}L->length = k;
}
//初始化线性表
void InitList(SqList*& L)
{L = (SqList*)malloc(sizeof(SqList));L->length = 0;}
//销毁线性表
void DestroyList(SqList*& L)
{free(L);
}
//判断线性表是否为空
bool ListEmpty(SqList* L)
{return (L->length == 0);
}
//求线性表的长度
int ListLength(SqList* L)
{return (L->length);
}
//输出线性表
void DispList(SqList* L)
{for (int i = 0; i < L->length; i++){cout << L->date[i]<<" ";}
}
//按序号求线性表中的元素
bool GetSqList(SqList* L, int i, elemType& e)
{if (i<1 || i>L->length){return false;}e = L->date[i - 1];return true;}
//按元素值查找
int LocateSqList(SqList* L, elemType e)
{int i = 0;for (i = 0; i < L->length; i++){if (L->date[i] == e){break;}}if (i >= L->length)return 0;elsereturn i + 1;
}
//插入数据元素
bool ListInsert(SqList* L, int i, elemType e)
{if (i<1 || i>L->length + 1 || L->length == MaxSize){return false;}i--;for (int j = L->length; j > i; j--){L->date[j] = L->date[j - 1];}L->date[i] = e;L->length++;return true;
}
//删除数据元素
bool ListDelete(SqList* L, int i, elemType & e)
{if (i<1 || i>L->length||L->length==0){return false;}i--;e = L->date[i];for (int j = i; j <L->length-1; j++){L->date[j] = L->date[j + 1];}L->length--;return true;
}
int main()
{SqList* L;int date[10];for (int i = 0; i < 10; i++){date[i] = i + 1;}int  n = sizeof(date)/sizeof(date[0]);CreateList(L, date, n);DispList(L);elemType e;GetSqList(L, 8, e);LocateSqList(L, 8);ListInsert(L,4, -1);elemType s;ListDelete(L, 10, s);DispList(L);DestroyList(L);return 0;
}//删除所有等于n的元素
void delnode(SqList*& L, int n)
{int i = 0;for (int k = 0; k < L->length; k++){if (L->date[k] != n){L->date[i] = L->date[k];i++;}}L->length = i;
}

链式


#include<iostream>
using namespace std;
typedef int elemType;
typedef struct LNode
{elemType date;struct LNode* next;
}LinkNode;
//头插法
void CreateListF(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->date = a[i];s->next = L->next;L->next = s;}
}
//尾插法
void CreateListR(LinkNode*& L, elemType a[], int n)
{LinkNode* s, * r;//s 负责承载新创建的元素节点,r 负责跟踪链表的尾部位置L= (LinkNode*)malloc(sizeof(LinkNode));r = L;for (int i = 0; i < n; i++){s= (LinkNode*)malloc(sizeof(LinkNode));s->date = a[i];r->next = s;r = s;}r->next = NULL;
}
//初始化线性表
void InitList(LinkNode*& L)
{L = (LinkNode*)malloc(sizeof(LinkNode));L->next = NULL;
}
//销毁线性表
void DestroyList(LinkNode*& L)
{LinkNode* pre = L, * p = L->next;while (p != NULL){free(pre);pre = p;p = p->next;}free(pre);
}
//判断线性表是否为空
bool ListEmpty(LinkNode* L)
{return (L->next == NULL);
}
//求线性表的长度
int ListLength(LinkNode*& L)
{int n=0;LinkNode* p = L;while (p->next!= NULL){n++;p = p->next;}return (n);
}
//输出线性表
void DispList(LinkNode*& L)
{LinkNode* p = L->next;while (p != NULL){cout << p->date << " ";p = p->next;}
}
//按序号求线性表中的元素
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->date;return true;}
}
//按元素值查找
int LocateList(LinkNode* L, elemType e)
{int i = 1;LinkNode* p = L->next;while (p != NULL && p->date != e){i++;p = p->next;}if (p == NULL){return 0;}else{return i;}
}
//插入数据元素
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->date = e;s->next = p->next;p->next = s;return true;}}
//删除数据元素
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->date;p->next = q->next;free(q);return true;}
}

http://www.dtcms.com/a/453775.html

相关文章:

  • 活动策划网站源码广西住房城乡建设领域
  • 做彩票网站犯法吗wordpress 标题颜色
  • 怎么科研绘图?怎么批量搜索高质量文献?Nature, Science, Cell
  • [hpatch]差分算法学习笔记 -- patch解压补丁
  • STM32G474 STM32CubeMX SPL06-001驱动程序
  • 域名注册好怎么建设网站工作态度和责任心感悟
  • 网站充值链接怎么做php网站空间支持
  • 做网站商城如何优化3 阐述网站建设的步骤过程 9分
  • 沈阳建网站公司wordpress posts page
  • [论文阅读] 软件工程 | 量子计算即服务(QCaaS)落地难?软件工程视角的解决方案来了
  • 上海网站建设的企哪些网站可以直接做英文字谜
  • 北京网站建设模板主题做一个小游戏要多少钱
  • jsx加密详解
  • 网站导航如何用响应式做管理咨询公司收费标准
  • 自助建站网站源码网站被百度k
  • 整体设计 逻辑系统程序 之15 Go 语言 / For 语句 / Do 句子
  • 贵阳工程建设招聘信息网站推广方式英文
  • 对称破局:双变量求值镜像之道
  • 智慧物流教师赛的意义:培养适应行业发展的新型教师
  • VBA之Word应用第四章第三节:段落集合Paragraphs对象的方法(一)
  • 微企点网站建设如何学习网站开发编程
  • 住房和城乡建设部网站买卖合同汽车拆车件网上商城
  • Sourcetree克隆/获取gitee工程,Git获取SSH密钥
  • 保定 网站制作 招聘wordpress图片清理
  • C++网络编程(四)文件描述符
  • Nginx+Keepalived高可用部署
  • 网站建设费用表格做网站 用 显示器
  • 【学习K230-例程47】GT6700-视频播放实验
  • 如何运用好DeepSeek为自己服务:智能增强的范式革命 || 2.1 认知负荷的量化分析
  • 自学做网站多久有ip地址如何做网站