📄 数据结构一线性表实现.txt
字号:
#include <stdio.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define TRUE 1
#define FALSE 0
#define NULL 0
#define InitSize 100
#define INCR 20
typedef int Status;
typedef int ElemType;
typedef struct
{ ElemType *Elem;
int Length;
int ListSize;
}SqList;
Status InitList_sq(SqList &L) /*初始化操作函数定义*/
{ L.Elem=(ElemType*)malloc(InitSize*sizeof(ElemType));
if (!(L.Elem))return(OVERFLOW);
L.Length=0; L.ListSize=InitSize;
return OK;
}
Status ListInsert_sq(SqList &L, int i, ElemType e) /*插入操作函数定义*/
{ int j;
if (i<1||i>L.Length+1) return ERROR;
if (L.Length>=L.ListSize)
{ L.Elem=(ElemType*)malloc((L.ListSize+INCR)*sizeof(ElemType));
if(!(L.Elem)) return(OVERFLOW);
L.ListSize+=INCR;
}
for(j=L.Length-1;j>=i-1;j--)
L.Elem[j+1]=L.Elem[j];
L.Elem[i-1]=e;
L.Length++;
return OK;
}
void ListOutput_sq(SqList L)/*顺序表输出操作*/
{ int i;
for(i=0;i<=L.Length-1;i++)
printf("%6d",L.Elem[i]);
printf("\n");
}
Status ListDelete_sq(SqList &L,int i,ElemType &e)/*顺序表删除操作*/
{ElemType *p,*q;
if ((i<1)||(i>L.Length)) return ERROR;
p=& (L.Elem[i-1]);
e=*p;
q=L.Elem+L.Length-1;
for (++p;p<=q;++p) *(p-1)=*p;
--L.Length;
return OK;
}
Status LocateElem_sq(SqList L,ElemType e)/*顺序表查找操作*/
{ElemType *p;
int i;
i=1;
p=L.Elem;
while(i<=L.Length && e!=*p++) ++i;
if (i<=L.Length) return i;
else return NULL;}
Status ListEmpty_sq(SqList L)/*顺序表判空操作*/
{
if (L.Length) return TRUE;
else return FALSE;
}
main()
{ SqList La;
int i;
InitList_sq(La);
for (i=0;i<5;i++) ListInsert_sq(La,i+1,2*i);
ListOutput_sq(La);
ListInsert_sq(La,1,999);
ListOutput_sq(La);
ListInsert_sq(La,4,888);
ListOutput_sq(La);
ListDelete_sq(La,4,888);
if (ListEmpty_sq(La)) ListOutput_sq(La);
ListInsert_sq(La,La.Length+1,111);
ListOutput_sq(La);
if (!LocateElem_sq(La,0)) printf("Have not find: 112\n");
else printf("Possion : %d",LocateElem_sq(La,111));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -