线性表
来源:互联网 发布:淘宝免费买东西的技巧 编辑:程序博客网 时间:2024/06/15 19:40
1 . 数组实现
typedef struct list{ ElementType Data[Maxsize]; int Last;}List;
List *MakeEmpty() //初始化{ List *PtrL; PtrL = (List*)malloc(sizeof(List)); PtrL->Last = -1; return PtrL;}
//平均比较次数(n+1)/2,平均时间O(n)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;}
//平均移动次数(n+1)/2,平均时间O(n)void Insert( ElementType X, int i, List *PtrL) //将X插入下标i{ int j; 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; } }
//平均移动次数(n-1)/2,平均时间O(n)void Delete( int i, List *PtrL ) //将下标i删除并i后所有前移{ 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;}
2 . 链表实现
typedef struct Node{ ElementType Data; struct Node *next;}List;
// 时间O(n)int Length(List *PtrL) //链表长度{ List *p = Ptrl; int j = 0; while(p) { p = p->next; j++; } return j;}
// 平均时间O(n)List *FindKth( int K, List *PtrL ) //查找第K个{ List *p = PtrL; int i = 1; while (p !=NULL && i < K ) { p = p->Next; i++; } if ( i == K ) return p; else return NULL;}// 平均时间O(n)List *Find( ElementType X, List *PtrL ) //按值查找{ List *p = PtrL; while ( p!=NULL && p->Data != X ) p = p->Next; return p; }
//平均查找次数n/2,平均时间O(n)List *Insert( ElementType X, int i, List *PtrL ){ List *p, *s; if(i==1) { s = (List *)malloc(sizeof(List)); s->Data = X; s->Next = PtrL; return s; } p = FindKth( i-1, PtrL); if ( p == NULL ) { printf("参数i错"); return NULL; else{ s = (List *)malloc(sizeof(List)); s->Data = X; s->Next = p->Next; p->Next = s; return PtrL; } }
//平均查找次数n/2,平均时间O(n)List *Delete(int i, List *PtrL){ List *p, *s; if(i == 1) { s = PtrL; if (PtrL!=NULL) PtrL = PtrL->Next; else return NULL; free(s); return PtrL; } p = FindKth( i-1, PtrL ); if ( p == NULL ) { printf(“第%d个结点不存在”, i-1); return NULL; } else if ( p->Next == NULL ) { printf(“第%d个结点不存在”, i); return NULL; } else { s = p->Next; p->Next = s->Next; free(s); return PtrL; } }
阅读全文
0 0
- 线性表--线性存储
- 线性表 线性结构
- 线性表
- 线性表
- 线性表
- 线性表
- 线性表
- 线性表
- 线性表
- 线性表
- 线性表
- 线性表
- 线性表
- 线性表
- 线性表
- 线性表
- 线性表
- 线性表
- Java笔记-反射机制Reflection API(java动态机制)基础
- 数据库 E-R 图的概念
- windows转linux后网页访问数据库访问不到
- Java实现简单的Json解析器
- 【自留】pyenv在Mac OS 下安装报错信息及解决方案
- 线性表
- 新手搭建VPS+SS服务器
- Cookie和Session
- macOS下基于GLFW+GLAD的OpenGL环境配置
- VS远程调式详解
- 65-C++中的异常处理(下)
- Octave 使用 plot 未响应
- WIN编程书籍总结
- DOS下转到D盘根目录