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

2018-12-29 20:02

} free(pNew); total=total+count; return pHead; }

// 判断L是否为空表 void ListEmpty(LinkList L) { if(NULL==L->next) printf(\此表为空表!\\n\ else printf(\此表不为空表!\\n\}

// 在链式线性表中第i个元素前插入新元素e void ListInsert(LinkList L,int i,int e) { LinkList p; LinkList s; p=L; int j=0; while(p&&jnext; ++j; } if(!p||j>i-1) printf(\不存在您要找的节点!\\n\ else { s=(LinkList)malloc(sizeof(int)); s->data=e; s->next=p->next; p->next=s; printf(\插入节点成功!\\n\ } }

// 输出链式线性表

void ShowList(LinkList L) { LinkList p; p=L->next; if(p==NULL) printf(\此表为空表!\\n\ else

11

while(p) { printf(\ \ p=p->next; } printf(\}

// 在链式线性表中删除第i个元素,并用e返回其值 void ListDelete(LinkList L,int i,int &e) { LinkList p; LinkList q; p=L; int j=0; while(p->next && jnext; ++j; } if(!(p->next)||j>i-1) printf(\没有找到要删除的位置!\ else { q=p->next; p->next=q->next; e=q->data; free(q); } }

// 用e返回L中第i个数据元素的值 void GetList(LinkList L,int i,int &e) { LinkList p; p=L->next; int j=0; while(p->next && jnext; ++j; } if(!(p)||j>i-1) printf(\没有找到要查找的位置!\ else e=p->data;

12

}

// 对比a与b相等 bool compare(int a,int b) { if(a==b) return 1; else return 0; }

// 在链式线性表L中查找第1个值与e满足compare()d元素的位序 void LocateElem(LinkList L,int e) { int i=0; LinkList p; p=L; while(p->next && !compare(p->data,e)) { p=p->next; i++; } if(NULL==p->next) { if(0==compare(p->data,e)) printf(\没有该元素!\\n\ else printf(\第1个与e相等的元素的位序为%d\\n\ } else if(compare(p->data,e)) printf(\没有该元素!\\n\}

LinkList MergeList_L(LinkList La,LinkList Lb) { int i,j,k; LinkList pa_1,pb_1,pa_2,pb_2,pc,pd; pa_1=La->next; pc=pa_2=La; pb_1=pb_2=Lb->next; if(pa_1->data > pb_1->data) { pc=pa_2=Lb; pa_1=Lb->next; pb_1=pb_2=La->next;

13

}

}

while(pa_1 && pb_1) { if(pa_1->data >= pb_1->data) { pa_2->next=pb_1; pb_2=pb_1->next; pb_1->next=pa_1; pb_1=pb_2; pa_2=pa_2->next; } else { pa_1=pa_1->next; pa_2=pa_2->next; } }

if(pb_1) pa_2->next=pb_1;

pd=(LinkList)malloc(sizeof(struct LNode)); pd->next=NULL; pa_2=pd; k=total;

for(i=0;inext; for(j=1;jnext; pb_1=(LinkList)malloc(sizeof(struct LNode)); pa_2->next=pb_1; pa_2=pa_2->next; pa_2->data=pa_1->data; k--; }

pa_2->next=NULL; return pd;

14

2.流程图(实验要求1和3)

开始输入nWhile(n)Yswitch(n)N1创建线性表 La2判断L是否为空表345定位元素6取元素7输出线性表8创建线性表Lb9归并为一个线性表La插入元素删除元素menu();scanf(\开始

图1 主函数流程图

开始L->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int))YNULL==L->elemNL->length=0;L->listsize=LIST_INIT_SIZE;printf(\输入顺序表a:\\n\scanf(\;Nwhile(n)YL->elem[i]=n;i++;L->length++;L->listsize=L->listsize-4;scanf(\结束

图2创建线性表La流程图

15


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

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

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

马上注册会员

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