q1=&(p->elem[i-1]); e=*q1; q2=p->elem+p->length-1; for(++q1;q1<=q2;++q1) *(q1-1)=*q1; --p->length; }
/*对比a与b相等*/ bool compare(int a,int b) { if(a==b) return 1; else return 0; }
/*在顺序线性表L中查找第1个值与e满足compare()d元素的位序*/ void LocateElem(Sqlist *L,int e) { int i=1; int *p; p=L->elem; while(i<=L->length && !compare(*p++,e)) ++i; if(i<=L->length) printf(\第1个与e相等的元素的位序为%d\\n\ else printf(\没有该元素!\\n\}
/*用e返回L中第i个数据元素的值*/ void GetList(Sqlist *p,int i,int &e) { Sqlist *p1; p1=p; e=p1->elem[i-1]; }
/* 已知顺序线性表La和Lb是元素按值非递减排列 */ /* 把La和Lb归并到La上,La的元素也是按值非递减 */ void MergeList_L(Sqlist *La,Sqlist *Lb) { int i=0,j=0,k,t; int *newbase; Sqlist *pa,*pb; pa=La; pb=Lb;
6
while(i
*)realloc(pa->elem,(pa->listsize+LISTINCREMENT)*sizeof(int)); if(!newbase) exit(0); } for(k=pa->length-1; k>=i; k--) pa->elem[k+1]=pa->elem[k]; pa->length++; pa->elem[i]=pb->elem[j]; i++; j++; } else i++; } while(j
*)realloc(pa->elem,(pa->listsize+LISTINCREMENT)*sizeof(int)); if(!newbase) exit(0); } for(j;j
7
(2)源程序(实验要求2和4)
#include
void menu();
LinkList InitList();
void ShowList(LinkList L);
void ListDelete(LinkList L,int i,int &e); void ListEmpty(LinkList L);
void GetList(LinkList L,int i,int &e); void ListInsert(LinkList L,int i,int e); bool compare(int a,int b);
void LocateElem(LinkList L,int e);
LinkList MergeList_L(LinkList La,LinkList Lb);
int total=0; void main() { LinkList La; LinkList Lb; La=(LinkList)malloc(sizeof(struct LNode)); La->next=NULL; Lb=(LinkList)malloc(sizeof(struct LNode)); Lb->next=NULL; int n; int m; int x; menu(); scanf(\ while(n) { switch(n) { case 0: ; break; case 1: La->next=InitList();break; case 2: ListEmpty(La);break;
8
case 3: printf(\请输入要插入到第几个节点前:\\n\ scanf(\ printf(\请输入插入的数据:\\n\ scanf(\ ListInsert(La,m,x);break; case 4: printf(\请输入删除元素的位序:\\n\ scanf(\ ListDelete(La,m,x); printf(\删除的元素为:%d\\n\ case 5: printf(\请输入要找的与线性表中相等的数:\\n\ scanf(\ LocateElem(La,m);break; case 6: printf(\请输入查找的位序:\\n\ scanf(\ GetList(La,m,x); printf(\中第%d个元素的值为%d\\n\ case 7: ShowList(La);break; case 8: Lb->next=InitList();break; case 9: La=MergeList_L(La,Lb); printf(\归并成功\\n\ } menu(); scanf(\ } }
void menu() { printf(\ printf(\ 0.退出\\n\\n\ printf(\ 1.创建线性表La\\n\\n\ printf(\ 2.判断是否为空表\\n\\n\ printf(\ 3.插入元素\\n\\n\
9
printf(\ 4.删除元素\\n\\n\ printf(\ 5.定位元素\\n\\n\ printf(\ 6.取元素\\n\\n\ printf(\ 7.输出线性表\\n\\n\ printf(\ 8.创建线性表Lb\\n\\n\ printf(\ 9.归并两线性表\\n\\n\ printf(\}
// 创建链式线性表L LinkList InitList() { int count=0; LinkList pHead=NULL; LinkList pEnd,pNew; pEnd=pNew=(LinkList)malloc(sizeof(struct LNode)); printf(\请输入数据:\\n\ scanf(\ while(pNew->data) { count++; if(count==1) { pNew->next=pHead; pEnd=pNew; pHead=pNew; } else { pNew->next=NULL; pEnd->next=pNew; pEnd=pNew; } pNew=(LinkList)malloc(sizeof(struct LNode)); printf(\请输入数据:\\n\ scanf(\
10
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言数据结构线性表的基本操作实验报告(2)在线全文阅读。
相关推荐: