第四周 建立单链表
2015-09-23 10:27
253 查看
/* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:项目1--建立单链表.cpp 作 者:吕云双 完成日期:2015年9月21日 版 本 号:v1.0 问题描述:定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果。 输入描述:若干数据 。 程序输出:输出8个以头插法建立的链表数据和6个以尾插法建立的链表数据。 */ #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) { int i=0; LinkList *p,*q; L=(LinkList *)malloc(sizeof(LinkList)); L->next=NULL; while(i<n) { p=(LinkList *)malloc(sizeof(LinkList)); p->data=a[i]; p->next=L->next; L->next=p; i++; } } void CreateListR(LinkList *&L,ElemType a[],int n) { LinkList *p,*q; int i=0; L=(LinkList *)malloc(sizeof(LinkList)); L->next=NULL; q=L; while(i<n) { p=(LinkList *)malloc(sizeof(LinkList)); p->data=a[i]; p->next=q->next; q->next=p; q=p; i++; } } void DispList(LinkList *L) { LinkList *p; p=L; p=p->next; while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n"); } void DestroyList(LinkList *&L) { LinkList *p,*q; p=L,q=p->next; while(q!=NULL) { free(p); p=q; q=q->next; } free(q); }
运行结果:
知识点:常用的线性结构有:线性表,栈,队列,双队列,数组,串
顺序存储结构就是用一组地址连续的存储单元依次存储该线性表中的各个元素。由于表中各个元素具有相同的属性,所以占用的存储空间相同。因此,在内存中可以通过地址计算直接存取线性表中的任一元素。这种结构的特点是逻辑上相邻的元素物理上也相邻。用顺序结构存储的线性表称作顺序表。
线性表按链式存储时,每个数据元素 (结点)的存储包括数据区和指针区两个部分。数据区存放结点本身的数据,指针区存放其后继元素的地址 (没有后继元素时设置为空字符(Null).。只要知道该线性表的起始地址 (记录在头指针中),表中的各个元素就可通过其间的链接关系逐步找到
相关文章推荐
- 线程的创建和启动
- linux目录 ~ 和/的区别
- IntelliJ IDEA的光芒会盖过Eclipse吗
- java - 类的加载过程
- IOS AppDelegate.m 详解
- 开发指南专题十七-JEECG图表配置说明
- 自动化统计工具
- cocos2d(粒子效果编辑器)
- MP4音频解码信息
- Android开发之Intent.Action(对前面uri的知识进行一些解释和扩展)
- PHP Ajax轮询
- postdemo
- 面试常问题的Jvm的原理
- hadoop序列化框架
- adb命令模拟按键事件
- Min Stack
- select into from 和 insert into select 的用法
- c基础--typedef和结构体
- 全面讲解Tomcat下SSL证书的配置(二)
- Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart