@yudesong
2017-06-24T14:28:41.000000Z
字数 851
阅读 576
线性表 @yudesong
线性表(a1,a2,…,an)有唯一的第一个和最后一个元素(n≥0)。其余的有唯一的前驱和后继。
顺序表定义:用一组地址连续的存储单元依次存放的数据元素。 在顺序表的第i个位置前插入一个数据元素,需要向后移动n - i +1个元素,删除第i个位置的元素需要向前移动n- i个元素。
特征:
1.集合中必存在唯一的一个“第一元素”;
2.集合中必存在唯一的一个 “最后元素” ;
3.除最后一个元素之外,均有 唯一的后继(后件);
4.除第一个元素之外,均有 唯一的前驱(前件)。
优缺点:
1. 优点:在于随机访问元素,
2. 缺点:插入和和删除的时候,需要移动大量的元素。
#include <stdio.h>#include <malloc.h>typedef char ElemType;typedef struct{ElemType data[MAX_SIZE];int len;}SqList;//初始化顺序表void initList(SqList *&L){L=(SqList *)malloc(sizeof(SqList));L->len=0;}//插入元素void insertList(SqList *&L,int i,ElemType e){i--;int j;for(j=L->len;j>i;j--)L->data[j]=L->data[j-1];L->data[i]=e;L->len++;}//删除第i个位置的元素void deleteList(SqList *&L,int i){i--;ElemType e=L->data[i];for(int j=i;j<L->len-1;j++)L->data[j]=L->data[j+1];L->len--;printf("%c",e);}//输出元素void disPlay(SqList *L){int i;for(i=0;i<;L->len;i++)printf("%c ",L->data[i]);}//释放顺序表void freeList(SqList *L){free(L);}
