线性表的建立,插入与删除

  • 格式:doc
  • 大小:30.50 KB
  • 文档页数:3

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的

1、掌握使用VC++上机调试线性表的基本方法;

2、掌握线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链接存储结构上的运算。

二、实验要求

1、设计对线性表进行链式存储操作的内容;

2、写出相应程序;

3、保存和打印出程序的运行结果,并结合程序进行分析。

三、实验内容

线性表的建立,插入与删除

算法:

Status InitList_ Sq(SqList &L)

Status ListInsert_ Sq(SqList &L, int i, Elemtype e){

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;

}//ListInsert_ Sq;

Status ListDelete_ Sq(SqList &L, int i, Elemtype e){

if(i<1||i>L.length+1) 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;

}//ListDelete_ Sq;

四、程序代码

#include

#include

typedef struct

{int *elem;

int length;

}sqlist;

void init(sqlist *L)

{

L->elem=(int*)malloc(100*sizeof(int));

L->length=0;

}

void read1(sqlist *L,int n)

{int i;

printf("input n shu:");

for(i=0;i

scanf("%d",&L->elem[i]);

L->length=n;

}

void print(sqlist L)

{int i;

for(i=0;i<=L.length-1;++i)

printf("%5d",L.elem[i]);

printf("\n");

}

void insert(sqlist *L,int i,int e)

{int *p,*q;

if(i<1||i>L->length+1)

printf("error");

else

{q=&L->elem[i-1];

for(p=&L->elem[L->length-1];p>=q;--p)

*(p+1)=*p;

*q=e;

++L->length;

}

}

void delist(sqlist *L,int i ,int *e)

{ int *p,*q;

if(i<1||i>L->length)

printf("error\n");

else

{q=&L->elem[i-1]; *e=*q;

for(p=q;p<=&L->elem[L->length-1];++p)

*(p)=*(p+1);

--L->length;

}

}

main()

{sqlist L; int e;int i,n;

init(&L);

printf("input n;");

scanf("%d",&n);

read1(&L,n);

print(L);

printf("input i,e;"); printf("input i,e;");

scanf("%d%d",&i,&e);

insert(&L,i,e);

printf("insert:");

print(L);

printf("input i;");

scanf("%d",&i);

delist(&L,i,&e); printf("delete:");

print(L);

getch();

}

五、结果及分析