严蔚敏--线性表的顺序表示和实现 代码
2011-10-14 22:57
393 查看
#include<iostream> #include<stdio.h> #include<stdlib.h> using namespace std; //----------线性表的动态分配顺序存储结构------------- #define LIST_INT_SIZE 100 #define LISTINCREATMENT 10 #define OVERFLOW -2 #define OK 1 #define ERROR 0 typedef int ElemType; typedef struct { ElemType *elem; int length; int listsize;/*当前分配的存储容量*/ }SqList; int InitList(SqList &L){//初始化 L.elem=(ElemType*)malloc(LIST_INT_SIZE*sizeof(ElemType)); if(!L.elem)exit(OVERFLOW); L.length=0; L.listsize=LIST_INT_SIZE; return OK; } int ListInsert(SqList&L,int i,ElemType e){//插入元素 if(i<1||i>L.length+1)return ERROR; if(L.length>>L.listsize){ ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREATMENT)*sizeof(ElemType)); if(!newbase)exit(OVERFLOW); L.elem=newbase; L.listsize+=LISTINCREATMENT; } ElemType*q=&(L.elem[i-1]); for(ElemType*p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p; *q=e; ++L.length; return OK; } int ListDelete(SqList&L,int i,ElemType&e){//删除元素 if(i<1||i>L.length)return ERROR; ElemType*p=&(L.elem[i-1]); e=*p; ElemType*q=&(L.elem[L.length-1]); for(++p;p<=q;++p)*(p-1)=*p; --L.length; return OK; } void PrintList(SqList L){//打印 for(int i=0;i<L.length;++i) cout<<L.elem[i]<<" "; cout<<endl; cout<<L.length<<endl; } int main(int argc, char **argv) { //测试 SqList L;InitList(L); int a[]={1,3,5,7,9,2,4,6,8}; for(int i=0;i<9;++i)ListInsert(L,i+1,a[i]); PrintList(L); return 0; }
相关文章推荐
- 严蔚敏版数据结构学习笔记(1):线性表的顺序表示和实现
- 数据结构算法代码实现——线性表的顺序表示与实现(二)
- (严蔚敏版)数组的顺序存储表示和实现代码
- 严蔚敏--线性表的链式表示和实现 代码
- 数据结构(C语言版) 线性表顺序表示与实现
- 线性表的顺序表示和实现
- 数据结构(1):线性表的顺序表示和实现
- 线性表的顺序表示实现-C++版
- 线性结构的顺序存储和链式存储的实现代码(一)
- 线性表之2.2顺序表示和实现
- 线性表的顺序表示和实现
- 线性表的顺序表示和实现
- 线性表的顺序表示与实现
- 重温数据结构-线性表的顺序表示与实现
- 线性表的顺序表示和实现<算法2.1-2.7>
- 线性表的顺序表示及实现(C语言编写)
- 线性表之顺序表示及实现
- 2.2线性表的顺序表示和实现(2)待修改
- 线性表的顺序表示和实现
- 线性表的顺序表示实现-C++版