咸鱼开始补习数据结构


按照我们上课的进度,国庆回来数据结构大概就要进行第一次过程化考核了,所以在国庆嗨了两天的数据结构= =。

  • 线性表的抽象数据类型
  • 顺序表与链表
  • 顺序表和链表的操作注意事项
  • 在面向对象的语言中写顺序表的注意事项

1.线性表的抽象数据类型

这里的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的元素个数

2.顺序表和链表

顺序表与链表可以被统称为线性表。

顺序表和链表,是线性表的不同存储结构。它们各自有不同的特点和适用范围。
顺序表不利于插入删除操作,插入删除要移动气候所用元素。
链表便于元素的插入和删除,但其随机存储不如顺序表方便。

更多有关详情(http://www.cnblogs.com/cyjb/p/Lists.html)

3.顺序表和链表的操作注意事项

在码代码之前对于我这样的菜鸡画个图是最好的选择,拿单链表的插入操作举个例子。

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;
}

23333 我只是想试一下新建文章
剩下的还没憋出来,也懒得憋了orz