C语言数据结构线性表的基本操作实验报告(2)

2018-12-29 20:02

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(ilength && jlength) { if(pa->elem[i] >= pb->elem[j]) { if(pa->listsize==0) { newbase=(int

*)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(jlength) { if( pa->listsize < pb->length-j ) { newbase=(int

*)realloc(pa->elem,(pa->listsize+LISTINCREMENT)*sizeof(int)); if(!newbase) exit(0); } for(j;jlength;j++,i++) { pa->elem[i]=pb->elem[j]; pa->length++; } } for(i=0;ilength/2;i++) { t=pa->elem[i]; pa->elem[i]=pa->elem[pa->length-i-1]; pa->elem[pa->length-i-1]=t; } }

7

(2)源程序(实验要求2和4)

#include #include #include typedef struct LNode { int data; struct LNode *next; }LNode, *LinkList;

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


C语言数据结构线性表的基本操作实验报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:项目所属学科门类(本科)或专业大类(高职) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: