第四周 项目一- 建立单链表
来源:互联网 发布:统计模型的数据选择 编辑:程序博客网 时间:2024/06/05 20:42
*作者:张栋
*完成时间:2015年9月25日
*题目描述:定义单链表存储结构,用头插法和尾插法建立单链表,,并显示建立好以后的结果
*代码:
#include <stdio.h>#include <malloc.h>typedef int ElemType;typedef struct LNode //定义单链表结点类型{ ElemType data; struct LNode *next; //指向后继结点} LinkList;void CreateListF(LinkList *&L,ElemType a[],int n); //头插法建立单链表void CreateListR(LinkList *&L,ElemType a[],int n); //尾插法建立单链表void DestroyList(LinkList *&L); //销毁单链表void DispList(LinkList *L); //输出单链表int main(){ LinkList*L1,*L2; ElemType a[8]={7,9,8,2,0,4,6,3}; CreateListF(L1,a,8); printf("头插法建表结果:"); DispList(L1); CreateListR(L2,a,6); printf("尾插法建表结果:"); DispList(L2); DestroyList(L1); DestroyList(L2); return 0;}void CreateListF(LinkList *&L,ElemType a[],int n)//头插法建立单链表{ LinkList *s; int i; L=(LinkList *)malloc(sizeof(LinkList)); //创建头结点 L->next=NULL; for (i=0; i<n; i++) { s=(LinkList *)malloc(sizeof(LinkList));//创建新结点 s->data=a[i]; s->next=L->next; //将*s插在原开始结点之前,头结点之后 L->next=s; }}void CreateListR(LinkList *&L,ElemType a[],int n)//尾插法建立单链表{ LinkList *s,*r; int i; L=(LinkList *)malloc(sizeof(LinkList)); //创建头结点 L->next=NULL; r=L; //r始终指向终端结点,开始时指向头结点 for (i=0; i<n; i++) { s=(LinkList *)malloc(sizeof(LinkList));//创建新结点 s->data=a[i]; r->next=s; //将*s插入*r之后 r=s; } r->next=NULL; //终端结点next域置为NULL}void DestroyList(LinkList *&L) //销毁单链表{ LinkList *p=L,*q=p->next; while (q!=NULL) { free(p); p=q; q=p->next; } free(p); //此时q为NULL,p指向尾结点,释放它}void DispList(LinkList *L) //输出单链表{ LinkList *p=L->next; while (p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n");}*运行结果:
*知识点总结及心得:
这个程序可以说大部分是自己写下来的,其实当自己写的时候,错误可以说是百出,就拿那个符号来说,要不是输入法不对就是忘记加了,只有当自己写的时候才能发现自己是多么不熟悉,对于以后的博客,自己还是要坚持去独立写出来,自己写出来的,才是自己的收获。然后下面我把升序的代码也拿了出来。
*一个升序的代码:
void CreateListO(LinkList *&L,ElemType a[],int n) //建立有序(升序)的单链表{ LinkList *s,*r; int i; L=(LinkList *)malloc(sizeof(LinkList)); //创建头结点 L->next=NULL; for (i=0; i<n; i++) { r=L; //r指向头结点 s=(LinkList *)malloc(sizeof(LinkList));//创建新结点 s->data=a[i]; s->next=NULL; while(r->next!=NULL && r->next->data < a[i]) //找到插入点 r = r->next; s->next=r->next; //将*s插入*r之后 r->next=s; }}
0 0
- 第四周项目一 建立单链表
- 第四周--项目一--建立单链表
- 第四周项目一建立单链表
- 第四周项目一-建立单链表
- 第四周 项目一- 建立单链表
- 第四周项目一 建立单链表
- 第四周项目一建立单链表
- 第四周 项目一【建立单链表】
- 第四周项目一 建立单链表
- 第四周-项目一 建立单链表
- 第四周【项目一-建立单链表】
- 第四周项目一-建立单链表
- 第四周-项目一-建立单链表
- 第四周 项目一【建立单链表】
- 第四周 项目一 单链表的建立
- 第四周项目一 建立单链表
- 第四周项目一—建立单链表
- 第四周项目一建立单链表
- Android实战简易教程<四>(ScrollView和HorizontalScrollView动态添加控件并提供事件监听)
- Linux下各种桌面环境开启字体完全渲染(hintfull)的工具和方法
- 【iOS架构】iOS应用架构概述
- DataTable数据分页
- 查看服务器用户登陆情况
- 第四周 项目一- 建立单链表
- Android实战简易教程<五>(ListView用法研究)
- iPhone上关于相机拍照的图片的旋转问题
- 类中使用对象指针的形式
- 第四周项目2-建设“单链表”算法库
- 第四周上机实践—项目2—建设“单链表”算法库
- button点击图标改变方法
- 第四周 建立单链表算法库
- Tool类(Leap::Tool)和ToolList类(Leap::ToolList)