<pre name="code" class="cpp">/* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:项目1--建立单链表.cpp 作 者:孙浩瀚 完成日期:2015年10月2日 版 本 号: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); }
运行结果:
<img src="http://img.blog.csdn.net/20151004222301324?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
总结:
应用到的知识点有:线性表,栈,队列,双队列,数组,串。
顺序存储结构就是用一组地址连续的存储单元依次存储该线性表中的各个元素,由于表中各个元素具有相同的属性,所以占用的存储空间相同。因此,在内存中可以通过地址计算直接存取线性表中的任一元素,这种结构的特点是逻辑上相邻的元素物理上也相邻,用顺序结构存储的线性表称作顺序表。