- 8
- 0
- 约1.24万字
- 约 14页
- 2016-10-11 发布于贵州
- 举报
内蒙古科技大学程硕士学位审批材料
内 蒙 古 科 技 大 学
数 据 结 构 原 理
班 级 09 信 管 1 班
学 号
姓 名 0 9 6 5 1 3 8XXX
成 绩
顺序表的操作
(1)插入元素操作:将新元素x插入到顺序表a中第i个位置。
(2)删除元素操作:删除顺序表a中第i个元素。
#includestdio.h
#include stdlib.h
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 10
#define ERROR 0
#define OK 1
#define OVERFLOW -1
typedef struct{
int *elem;
int length;
int listsize;
}SqList;
int InitList(SqList *L)
{
int i,k;
L-elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L-elem) exit(OVERFLOW);
L-length =10;
L-listsize = LIST_INIT_SIZE;
for(i=0;iL-length;i++)
{
scanf(%d,k);
L-elem[i]=k;
}
return OK;
}
int ListInsert(SqList *L,int i, int e)
{ int *newbase,*q,*p;
if(i1||iL-length+1) return ERROR;
if(L-length=L-listsize){
newbase = ( int *)realloc(L-elem,( L-listsize +LISTINCREMENT)*sizeof(int));
if(!newbase) exit(OVERFLOW) ;
L-elem = newbase;
L-listsize+=LISTINCREMENT;
}
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(SqList *L, int i, int e) {
int *p, *q;
if (i1 || iL-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;
}
int display(SqList *L)
{
int i;
for(i=0;iL-length;i++)
{
printf(%d,L-elem[i]);
printf( );
}
return OK;
}
int main()
{
SqList L;
char e;
int i,num;
printf(请初始化10个元素:\n);
InitList(L);
printf(初始化后);
display(L);
printf(\n请输入你要删除的元素的位置\n);
scanf(%d,i);
ListDelete(L,i,e);
printf(删除后:\n);
display(L);
printf(\n请输入插入位置和元素(格式“位置”,“元素”));
scanf(%d,%d,i,num);
ListInsert(L,i,num);
printf(插入后:\n);
display(L);
return OK;
}
二、单链表的操作
(1)创建一个带头结点的单链表;
(2)插入元素操作:将新元素x插入到单链表中第i个元素之后;
(3
原创力文档

文档评论(0)