按照我们上课的进度,国庆回来数据结构大概就要进行第一次过程化考核了,所以在国庆嗨了两天的数据结构= =。
线性表的抽象数据类型顺序表与链表顺序表和链表的操作注意事项在面向对象的语言中写顺序表的注意事项这里的LinkList其实只是一些默认的称呼,要是不喜欢的话随便叫个大毛二毛对写的内容是没有影响的。但是默认的称谓看一眼看出该函数的作用,没什么特殊需要还是不要改的好哦= =
1.InitList(*L):初始化操作,建立一个空的线性表
2.ListEmpty(L):判断线性表是否为空表,若线性表为空,返回投入true,否则返回false
3.ClearList(*L):将线性表清空
4.GetElem(L,i,*e):将线性表L中的第i个位置元素值返回给e
5.LocateElem(L,e):在线性表L中查找与给定值e相等的元素,如果查找成功,放回元素在表中序号,否则返回0失败
6.ListInsert(*L,i,e):在线性表L中的第i个位置插入新元素e
7.ListDelete( *L,i,*e):删除线性表L中第i个位置元素,并且用e返回其值
8.ListLength(L):返回线性表L的元素个数
顺序表与链表可以被统称为线性表。
顺序表和链表,是线性表的不同存储结构。它们各自有不同的特点和适用范围。 顺序表不利于插入删除操作,插入删除要移动气候所用元素。 链表便于元素的插入和删除,但其随机存储不如顺序表方便。
更多有关详情(http://www.cnblogs.com/cyjb/p/Lists.html)
在码代码之前对于我这样的菜鸡画个图是最好的选择,拿单链表的插入操作举个例子。
Status ListInsert( LinkList *L, int i,ElemType e) { int j=1; LinkList p,s;//LinkList的作用类似int,定义了变量p while( p && j<i)// 用于寻找第i个结点位置,未到末尾且未到第i个结点 { p = L->next; j++; } if( !p || j>i)//p不存在 { return ERROR; } s = (LinkList)malloc(sizeof(Node)); s->data = e; s->next = p->next; p->next = s; return OK; }