数据结构学习笔记-03-线性表及其实现
2018-12-23 10:13
162 查看
线性表的顺序存储实现
typedef struct LNode *list; struct LNode { ElementType Data[MAXSIZE]; int Last; }; struct LNode L; List Ptrl;
初始化:
List MakeEmpty() { List PtrL; PtrL = (List )malloc(sizeof(struct LNode)); PtrL->Last = -1; return PtrL; }
查找指定元素:
int Find(ElementType X,List PtrL) { int i = 0; while(i<=PtrL->Last && PtrL->Data[i]!=X) i++; if (i>PtrL->Last) return -1; else return i; }
插入:
void insert(ElementType X,int i,List PtrL) { int i; if(PtrL->Last == MAXSIZE-1) { printf("表满"); return; } if (i<1||i>PtrL->Last+2) { printf("位置不合法"); return; } for (j=PtrL->Last;j>=i-1;j--) PtrL->Data[j+1]=PtrL->Data[j]; PtrL->Data[i-1]=X; PtrL->Last++; return; }
删除节点:
void Delete(int i,List PtrL) { int j; if (i<1||i>PtrL->Last+1) { printf("不存在第%d个元素",i); return; } for (j=i;j<=PtrL->Last;j++) PtrL->Data[j-1] = PtrL->Data[j]; PtrL->Last--; return; }
线性表的链式存储实现
typedef struct LNode *List; struct LNode { ElementType Data; List Next; }; struct LNode L; List PtrL;
求表长:
int Length(List PtrL) { List p = PtrL; int j = 0; while(p) { p=p->Next; j++; } return j; }
按序号查找:
List FindKth(int K,List PtrL) { List p = PtrL; int i = 1; while(p!=NULL&&i<K) { p = p->Next; i++; } if (i==K) return p; else return NULL; }
按元素值查找:
List Find(ElementType X,List PtrL) { List p=PtrL; while(p!=NULL && p->Data!=X) p=p->Next; return p; }
插入节点:
List Insert(List PtrL,int k,ElementType X)//插入元素 { List p,s; if (k==1) { s=(List)malloc(sizeof(struct LNode)); s->Data=X; s->Next=PtrL; return s; } p=FindKth(k,PtrL) if (p==NULL) { printf("参数k出错"); return NULL; } else { s=(List)malloc(sizeof(struct LNode)); s->Data=X; s->Next=p->Next; p->Next=s; return PtrL; } }
删除节点:
List Delete(int k,LIst PtrL)//删除节点 { List p,s; if (k==1) { s=PtrL; if (PtrL!=NULL) PtrL=PtrL->next; else return NULL; free(s); return PtrL; } p=FindKth(k-1,List) if (p==NULL) { printf("第%d个节点不存在",k-1); return NULL; } if (p->Next==NULL) { printf("第%d个节点不存在",k); return NULL; } else { s=p->Next; p-Next=s->Next; free(s); return PtrL; } }
相关文章推荐
- 数据结构学习笔记(二)线性表及其C++实现
- 数据结构学习笔记(3)_使用数组实现简单线性表功能
- JAVA源码中线性表,栈和队列的实现及其对应的源码文件
- 数据结构学习笔记(3)_使用数组实现简单线性表功能
- 线性表链式存储(静态链表)及其12种操作的实现
- (笔记)数据结构2.1-线性表及其实现(二)
- 数据结构-线性结构-线性表及其实现
- 数据结构学习笔记(五)二叉树及其C++实现
- 顺序存储操作的实现和线性表及其应用
- 数据结构学习笔记(3)_使用数组实现简单线性表功能
- 数据结构学习笔记(四)队列及其C++实现
- java实现线性表及其算法
- 数据结构学习笔记(三)栈及其C++实现
- 算法学习之旅-线性表及其实现
- (笔记)数据结构2.1-线性表及其实现(一)
- java实现链表线性表
- 嵌入式系统通用驱动程序接口及其实现-I2C主机设备驱动(视频教学时的同步输入文件)
- 【Shader】实验03——后处理实现像素化风格
- 机顶盒平台的字幕数据格式分析及其显示实现
- 常见的负载均衡算法及其代码实现