定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果。
2015-09-21 17:08
405 查看
问题及代码:
运行结果:
知识点及总结:运用到简单的链表的建立及其使用的方法。
学习心得:
/* *Copyright(c) 2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:test.cpp *作 者:刘磊 *完成日期:2015.9.21 *版 本 号:v1.0 * *问题描述:定义单链表存储结构,用头插法和尾插法建立单链表. *输入描述:用头插法和尾插法建立一个单链表。 *程序输出:建立好之后的返回结果。 */ #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"); }
运行结果:
知识点及总结:运用到简单的链表的建立及其使用的方法。
学习心得:
相关文章推荐
- Java通过位运算实现10-16进制转换
- Android开发总结笔记 RelativeLayout(相对布局) 1-1-2
- 图文:eclipse中SVN分支合并到主干
- requestWindowFeature()的应用
- 判断Android手机是否开启USB调试
- Oracle Jdbc 防sql注入
- 点击EDITTEXT之外 隐藏输入法的实现
- apache camle template , Adding Routes dynamically
- javascript 方法 prototype属性
- 最大子数组的线性解法
- apache camle template , Adding Routes dynamically
- 关于Latch争用
- C++基础
- Myeclipse10下搭建SSH框架(图解)Struts2.1+Spring3.0+Hibernate3.3
- YII2的安装与配置
- 移动端页面一键拨号、发送短信等功能
- 【Android】不弹root请求框检测手机是否root
- setsockopt()用法(参数详细说明)
- Spring MVC学习(二) ModelAndView 对象
- poj1426