线性表的建立,插入与删除
- 格式:doc
- 大小:30.50 KB
- 文档页数:3
一、实验目的
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(); } 五、结果及分析