欢迎来到天天文库
浏览记录
ID:32610675
大小:395.50 KB
页数:20页
时间:2019-02-13
《数据结构上机.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、顺序表的建立StatusInitList(SqList&L){//构造一个空的顺序表L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(!L.elem)exit(OVERFLOW);L.length=0;L.listsize=LIST_INIT_SIZE;returnOK;}顺序表按照值查找位置intLocateElem(SqListL,ElemTypee){//根据数据元素的值,返回它在线性表L中的位置inti=0;while((i<=
2、L.length)&&(*(L.elem+i-1)!=e))i++;if(i<=L.length)returni;elsereturn(-1);}顺序表按照序号查找元素的值StatusGetElem(SqListL,inti,ElemType&e){//根据数据元素在线性表L中的位置,返回它的值if(i<1
3、
4、i>L.length)exit(ERROR);e=L.elem[i-1];returnOK;}顺序表数据元素的插入StatusListInsert(SqList&L,inti,ElemTypee){/
5、/在L中第i个位置之前插入新的数据元素e,L的长度加1int*q,*p;q=&(L.elem[i-1]);for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;*q=e;++L.length;if(L.length>=L.listsize)++L.listsize;returnOK;}顺序表数据元素的删除StatusListDelete(SqList&L,inti,ElemType&e){//删除L的第i个数据元素,并用e返回其值,L的长度减1int*q,*p;if(
6、(i<1)
7、
8、(i>L.length))returnERROR;p=&(L.elem[i-1]);e=*p;q=L.elem+L.length-1;for(++p;p<=q;++p)*(p-1)=*p;--L.length;returnOK;}顺序表数据元素输出单链表的操作Statusvisit(SqListL){//按序输出顺序表的各个元素值inti;for(i=1;i<=L.length;i++)printf("%2d",*(L.elem+i-1));cout<9、%uL.length=%dL.listsize=%d",L.elem,L.length,L.listsize);returnOK;}单链表的建立StatusInitList(LinkList&L){//构造一个空的单链表LL=(LinkList)malloc(sizeof(LNode));if(!L)exit(OVERFLOW);L->next=NULL;returnOK;}单链表的建立voidCreateList2(LinkList&L,intn){//正位序输入n个元素的值,建立带表头结构的单链线性10、表inti;LinkListp,q;L=(LinkList)malloc(sizeof(LNode));L->next=NULL;q=L;printf("正位序,请输入%d个数据:",n);for(i=1;i<=n;i++){p=(LinkList)malloc(sizeof(LNode));scanf("%d",&p->data);q->next=p;q=q->next;}p->next=NULL;}单链表的输出Statusvisit(LinkListL){//按序输出单链表的各个元素值LinkListp11、=L->next;while(p){printf("%2d",p->data);p=p->next;}printf("");returnOK;}单链表结点的插入StatusListInsert(LinkListL,inti,ElemTypee){intj=0;LinkListp=L,s;while(p&&jnext;j++;}if(!p12、13、j>i-1)returnERROR;s=(LinkList)malloc(sizeof(LNode));s->data=e;s->next=p-14、>next;p->next=s;returnOK;}单链表结点的删除StatusListDelete(LinkListL,inti,ElemType&e){intj=0;LinkListp=L,q;while(p->next&&jnext;++j;}if(!(p->next)15、16、j>i-1)return0;q=p->next;p->next=q->next;e=q->data;free(q)
9、%uL.length=%dL.listsize=%d",L.elem,L.length,L.listsize);returnOK;}单链表的建立StatusInitList(LinkList&L){//构造一个空的单链表LL=(LinkList)malloc(sizeof(LNode));if(!L)exit(OVERFLOW);L->next=NULL;returnOK;}单链表的建立voidCreateList2(LinkList&L,intn){//正位序输入n个元素的值,建立带表头结构的单链线性
10、表inti;LinkListp,q;L=(LinkList)malloc(sizeof(LNode));L->next=NULL;q=L;printf("正位序,请输入%d个数据:",n);for(i=1;i<=n;i++){p=(LinkList)malloc(sizeof(LNode));scanf("%d",&p->data);q->next=p;q=q->next;}p->next=NULL;}单链表的输出Statusvisit(LinkListL){//按序输出单链表的各个元素值LinkListp
11、=L->next;while(p){printf("%2d",p->data);p=p->next;}printf("");returnOK;}单链表结点的插入StatusListInsert(LinkListL,inti,ElemTypee){intj=0;LinkListp=L,s;while(p&&jnext;j++;}if(!p
12、
13、j>i-1)returnERROR;s=(LinkList)malloc(sizeof(LNode));s->data=e;s->next=p-
14、>next;p->next=s;returnOK;}单链表结点的删除StatusListDelete(LinkListL,inti,ElemType&e){intj=0;LinkListp=L,q;while(p->next&&jnext;++j;}if(!(p->next)
15、
16、j>i-1)return0;q=p->next;p->next=q->next;e=q->data;free(q)
此文档下载收益归作者所有