线性表的顺序存储方式

来源:互联网 发布:mysql indexof 编辑:程序博客网 时间:2024/06/06 00:54

线性表的顺序存储方式比较简单,也很容易理解,不作过多说明,直接上代码实现,用的是C语言

#include <stdio.h>#define MAXSIZE 100#define OK 1#define ERROR 0typedef int ElemType;typedef struct                              //定义顺序表(线形表的顺序存储结构) {ElemType data[MAXSIZE];int length;}SqList;int GetElem(SqList L,int i,ElemType *e)     //用e返回顺序表中第i个元素值 {if(L.length==0||i<1||i>L.length)return ERROR;*e=L.data[i-1];return OK;}int ListInsert(SqList *L,int i,ElemType e)  //在顺序表中第i个元素前插入元素e {int k;if(L->length==MAXSIZE)                  //顺序表已满 return ERROR;if(i<1||i>L->length+1)                  //i不在范围内 return ERROR;if(i<=L->length){for(k=L->length-1;k>=i-1;k--)      //如果不是插入到最后一位,那么将插入位置后元素后移一位 L->data[k+1]=L->data[k];}L->data[i-1]=e;L->length++;return OK;}int ListDelete(SqList *L,int i,ElemType *e)  //删除顺序表中的第i个元素,用e返回其值 {int k;if(L->length==0)                        //顺序表为空 return ERROR;if(i<1||i>L->length)                   //i不在范围内造成删除位置不正确 return ERROR;*e=L->data[i-1];if(i<L->length){for(k=i;i<L->length;k++)          //如果不是删除最后一位,将删除位置后继元素前移 L->data[k-1]=L->data[k];}L->length--;return OK;}int main(){SqList l;                             //定义一个顺序表l SqList *p;p=&l;                                 //定义一个指针p指向顺序l int i,m,n;int *e;                              //定义一个整形指针,指向整形变量m e=&m;l.length=10;for(i=0;i<10;i++)                    //初始化顺序表 l.data[i]=i;n=GetElem(l,5,e);                   //获取顺序表第5个元素的值 printf("%d   %d\n",n,m);n=ListInsert(p,5,100);              //将100插入第5个元素前 printf("%d\n",n);for(i=0;i<=10;i++)printf("%d  ",p->data[i]);printf("\n");n=ListDelete(p,8,e);                //删除第8个元素 printf("%d %d\n",n,m);for(i=0;i<10;i++)printf("%d  ",p->data[i]);return 0; } 


0 0
原创粉丝点击