赞
踩
线性表的顺序存储实现:
- typedef struct LNode* List;
- struct LNode {
- ElementType Data[MAXSIZE];
- int Last;
- };
- struct LNode L;
- List PtrL;
-
- //访问下标为i的元素:L.Data[i] or PtrL->Data[i];
- //线性表的长度:L.Last+1 or Ptrl->Last+1;
List MakeEmpty():初始化一个空的线性表L
ElementType FindKth(int K,List L):根据位序k,返回相应元素;
int Find(ElementType X,List L):在线性表L中查找X第一次出现的位置;
void Insert(ElementType X,int i,List L):在位序i前插入一个新元素X;
void Delete(int i,List L ):删除指定位序i的元素;
int Length(List L):返回线性表L的长度n;
- List MakeEmpty()
- {
- List PtrL;
- PtrL = (List)malloc(sizeof(struct LNode));
- PtrL->Last = -1;//Last 代表最后一个元素,如果Last=0则表示表里有一个元素存放在第一个位置;
- return PtrL;
- }
- int Find(ElementType X, List PtrL)
- {
- int i;
- 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 L)
- {
- int j;
- if (PtrL->Last == MAXSIZE - 1) {//表空间已满,不能插入
- printf("表满");
- return;
- }
- if (i<1 || i>PtrL->Last + 2) {//检查插入位置的合法性
- ptintf("位置不合法");
- return;
- }
- for (j = PtrL->Last; j >= i - 1; j--) {
- PtrL->Data[j + 1] = PtrL->Data[j];//将ai--an倒序向后移动
- }
- PtrL->Data[i - 1] = X;//新元素插入
- PtrL->Last++;//Last仍指向最后元素
- return;
- }
- void Delete(int i, List L)
- {
- 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];//将ai--an正序向前移动
- }
- PtrL->Last--;
- return;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。