#include <Windows.h>
#define MAXSIZE 100/*定义表的长度,这是顺序表的缺点呀,不过有失必有得*/
#define OK 1
#define ERROR 0
typedef int Status;/*定义我们函数的返回状态*/
typedef int ElemType;/*数据类型*/
typedef struct
{
ElemType data[MAXSIZE];/*表在这里*/
int length;/*表的长度*/
}LinkList;
/************************************************************************/
/* 获取第N个元素 */
/************************************************************************/
Status GetElem(int N,LinkList L,ElemType *e)
{
/*做一件事情前,总得界定范围,不要搞不符合中国国情的事情哦。。。*/
if (L.length<1)
return ERROR;
/*亲,不要跑偏了,只能在这里*/
if (N>L.length || N<1)
return ERROR;
*e=L.data[N-1];
return OK;
}
/************************************************************************/
/* 删除第N个元素 */
/************************************************************************/
Status DeleteElem(int N,LinkList *L,ElemType *e)
{
//同样的,要符合中国国情
if (L->length<1)
return ERROR;
/*亲,还是不要跑偏了,*/
if (N>L->length || N<1)
return ERROR;
/*删了一个元素,你后面的就要补上来,不然我们的表不就跟数组一样了。。。*/
*e=L->data[N-1];/*看看删的是哪位仁兄*/
/*没想到还是要搞特权,如果删除的是最后一位仁兄,他后面没兄弟了,不能补了,特批下吧*/
if (N<=L->length)
{
/*移动了一大篇呀,泪奔呀。。。时间复杂度O(n)*/
for (int i=N-1;i<L->length;i++)
{
L->data[i]=L->data[i+1];/*吼吼,前面买到火车票了,后面要票的的兄弟跟上*/
}
}
L->length--;/*把你队伍人数减掉一个,不能虚报哟,可是要吃枪子的*/
return OK;
}
/************************************************************************/
/* 插入第N个元素 */
/************************************************************************/
Status InsertElem(int N,LinkList *L,ElemType e)
{
/*老话了,符合国情,100年不动摇*/
if (L->length<1)
return ERROR;
if (N>L->length || N<1)
return ERROR;
/*移动元素,最好的办法就是从尾部往后面移动,注意不要越界了哟*/
if (N>=MAXSIZE)
{
return ERROR;
}
/*插队分为正常排队和非法排队。。。*/
if (N<=L->length)
{
/*缺陷呀,时间复杂度又是O(n)*/
for (int i=L->length;i>=N-1;i--)
{
L->data[i]=L->data[i-1];
}
}
L->data[N-1]=e;/*终于轮到男猪脚最后一插*/
L->length++;
return OK;
}
int main()
{
/*好吧,初始化列表*/
LinkList L;
L.length=1;
L.data[L.length-1]=0;
/*先说说顺序表的优势吧。。。*/
/*那就是读取元素,时间复杂度O(1). ps:不懂时间复杂度的编程同学,面壁去。。。*/
ElemType e;
GetElem(1,L,&e);
printf("length:%d,Elem:%d\n",L.length,e);
/*插入吧*/
e=23;
InsertElem(1,&L,e);
printf("length:%d,Elem:%d\n",L.length,e);
/*有得必有失,下面我们那删除一个元素看看。。*/
e=NULL;
DeleteElem(1,&L,&e);
printf("length:%d,Elem:%d\n",L.length,e);
}