第1个回答 2013-09-20
#include<iostream.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define OVERFLOW -2
#define OK 1
#define ERROR 0
typedef char ElemType;
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
int InitList_Sq(SqList &L) //初始化函数
{
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
//申请存储空间
if(!L.elem)exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;
}
int ListInsert_Sq(SqList &L,int i,ElemType e) //在顺序线性表L中删除第i个元素,并用e返回
{
char *q;
char *p;
if(i<1||i>L.length+1)
return ERROR;
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L.length;
return OK;
}
int ListDelete_Sq(SqList &L,int i,ElemType &e) //在顺序线性表L中删除第i个元素,并用e返回其值
{
char *p;
char *q;
if((i<1)||(i>L.length))
return ERROR;
p=&(L.elem[i-1]);
e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)
*(p-1)=*p;
--L.length;
return OK;
}
void DispList(SqList &L) //遍历函数
{
int i;
for(i=0;i<L.length;i++)
cout<<L.elem[i];
cout<<endl;
}
//主函数
void main()
{
SqList L;
char e;
InitList_Sq(L);
cout<<"依次采用尾随插法插入abcd元素"<<endl;
ListInsert_Sq(L,1,'a');
ListInsert_Sq(L,2,'b');
ListInsert_Sq(L,3,'c');
ListInsert_Sq(L,4,'d');
cout<<"输出顺序表";
DispList(L);
cout<<"顺序表L长度为:"<<L.length<<endl;
ListInsert_Sq(L,5,'e');
cout<<"当前顺序表L为:";
DispList(L);
cout<<"当前顺序表L长度为:"<<L.length<<endl;
ListDelete_Sq(L,2,e);
cout<<"当前顺序表L为:";
DispList(L);
cout<<"当前顺序表L长度为:"<<L.length<<endl;
}
顺序表线性表
这是我以前做实验报告写的,希望可以