第4周项目2
来源:互联网 发布:mac宽带连接说鉴定失败 编辑:程序博客网 时间:2024/06/05 04:55
/* 烟台大学计算机学院 文件名称:xm.cpp 作者:于琛 完成日期:2017年9月24日 问题描述:建立单链表算法库 输入描述:无 输出描述:进行了各个的链表的值 */ list.cpp:#include <stdio.h>#include <malloc.h>#include "list.h"void initList(Linklist *&L)//初始化链表{ L=(Linklist *)malloc(sizeof(Linklist));//动态开辟内存 L->next=NULL;//链表为空}bool ListInsert(Linklist *&L,int i,ElemType e)//链表插入{ int j=0; Linklist *p=L,*s; if(i<=0)//输入的i比0小不合法 { return false; } while(j<i-1 && p!=NULL)//遍历 { j++; p=p->next; } if(p==NULL)//未找到i-1位置结点 { return false; } else//找到 { s=(Linklist *)malloc(sizeof(Linklist)); s->data=e; s->next=p->next; p->next=s;//插入操作 return true; }}void DispList(Linklist *L)//输出链表的元素值{ Linklist*p=L->next; while(p!=NULL)//输出+遍历 { printf("%d ",p->data); p=p->next; } printf("\n");}void DestroyList(Linklist *&L)//销毁链表{ Linklist *pre=L,*p=L->next; while(p!=NULL) { free(pre); pre=p; p=pre->next; } free(pre);}void CreateListF(Linklist *&L,ElemType a[],int n){ Linklist *s; L=(Linklist *)malloc(sizeof(Linklist));//动态开辟内存空间 L->next=NULL; for(int i=0;i<n;i++)//头插法 { s=(Linklist *)malloc(sizeof(Linklist)); s->data=a[i]; s->next=L->next; L->next=s; }}void CreateListR(Linklist *&L,ElemType a[],int n)//尾插法{ Linklist *s,*r; L=(Linklist *)malloc(sizeof(Linklist)); r=L; for(int i=0;i<n;i++)//尾插法 { s=(Linklist *)malloc(sizeof(Linklist)); s->data=a[i]; r->next=s; r=s; } r->next=NULL;}bool ListDelete(Linklist *&L,int i,ElemType &e)//删除链表元素{ int j=0; Linklist *p=L,*q; if(i<=0)return false; while(j<i-1 && p!=NULL)//找到i的前一节点i-1 { j++; p=p->next; } if(p==NULL)//p为空,未找到元素 { return false; } else { q=p->next; if(q==NULL)//未找到元素 { return false; } e=q->data;//删除的元素保留到e p->next=q->next; free(q); return true; }}main:#include <stdio.h>#include <malloc.h>#include "list.h"int main(){ Linklist *L1,*L2; ElemType a[8]={7,9,8,2,0,4,6,3}; printf("头插法建表结果:"); CreateListF(L1,a,8); DispList(L1); printf("尾插法建表结果:"); CreateListR(L2,a,8); DispList(L2); DestoryList(L1); DestoryList(L2); int b; Linklist *L3; CreateListR(L3,a,8); ListDelete(L3,4,b); printf("删除a数组中的元素:"); printf("%d\n",b); DispList(L3); printf("插入验证:"); Linklist*L; initList(L); ListInsert(L,1,15); ListInsert(L,1,10); ListInsert(L,1,5); ListInsert(L,1,20); DispList(L); DestroyList(L); return 0;}list.h:#include <stdio.h>#include <malloc.h>#include <stdio.h>#include <malloc.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}Linklist;void initList(Linklist *&L);//初始化链表bool ListInsert(Linklist *&L,int i,ElemType e);//链表插入void DispList(Linklist *L);//输出void DestroyList(Linklist *&L);//销毁void CreateListF(Linklist *&L,ElemType a[],int n);//头插法void CreateListR(Linklist *&L,ElemType a[],int n);//尾插法bool ListDelete(Linklist *&L,int i,ElemType &e);//元素删除
运行结果:
学习心得:
学会了建立链表算法库。
阅读全文
0 0
- 第2周项目4
- 第4周项目2
- 第4周项目2
- 第4周【项目2
- 第4周-项目4-(2)
- 第12周项目2_(4)
- 第16周项目2-4
- 第2周项目4图书借阅
- 第4周项目--程序阅读2
- 第4周实践项目2-单链表
- 第2周项目4 求平方和
- 第3 周项目4-(2)换分币
- 第4周-项目5-(2)
- 第4周项目1-(2)
- 第4周项目2 长方形面积
- 第4周项目3(2)
- 第4周项目4
- 第4周项目4
- 系统中同时有 python2和 python3,怎么让 ipython 选择不同的版本启动?
- select自定义下拉箭头
- iOS中常见的传感器
- Android studio 的快捷键 MAC 和Win版本
- python迭代器与生成器与上下文管理器
- 第4周项目2
- gcc中遇到的一些问题
- 字符数组的讲解
- IAR编译器如何节省代码占用的flash空间?
- 在微信小程序中识别html标签的方法(wxParse)
- Redis之基础类型
- Webservice02---SOAP
- Java交通工具
- 真机调试与App上架