1、 数据结构课程设计 课 程: 数据结构 题 目: 链表操作 专业班级: 09 软件工程(1)班 设计时间: 2011 指导教师: 一、 设计题目 课程设计题四:链表操作 1、设计目的 掌握线性链表的建立。 掌握线性链表的基本操作。 2、设计内容和要求 利用链表的插入运算建立线性链表,然后实现链表的查找、删除、 计数、输出、排序、逆置等运算,插入、删除、查找、计数、输出、 排序、逆置要单独写成函数,并能在屏幕上输出操作前后的结果。 二、 运行环境(软、硬件环境) 硬件环境:普通 PC 机 软件环境:VC6.0 三、 算法设计的思想 选用单链表作为数据元素的存储结构,对每个数据元素,由一个数据域
2、和一个指针域组成,数据域放输入的数值,指针域指向下一个结点 数据结构 单链表结点类型 typedef struct LNode ElemType data; struct LNode *next; LinkList; 模块划分 void InitList(LinkList j+ s=(LinkList *)malloc(sizeof(Link List); s-data=e; s-next=p-next; p-next=s; p 五、 算法设计分析 首先利用元素插入法建立链表建立链表,然后导出菜单,用 switch 调用各个子函 数,实现链表的查找、删除、计数、输出、排序、逆置等运算,其中元素
3、插入用的 是头插法,排序用的是冒泡法,冒泡排序是稳定排序 for(p=L;p!=NULL;p=p-next) for(q=p-next;q!=NULL;q=q-next) if(p-dataq-data) temp=q-data; q-data=p-data; p-data=temp; 六、 源代码 #define NULL 0 #include #include typedef int ElemType; typedef struct LNode ElemType data; struct LNode *next; LinkList; void InitList(LinkList int L
4、istInsert_L(LinkList p= int j=0; while(p j+; if(!p|ji-1)return 0; s=(LinkList *)malloc(sizeof(LinkList); s-data=e; s-next=p-next; p-next=s; return 1; ElemType ListDelete_L(LinkList ElemType e; int j=0; while(p-next j+; if(!p-next q=p-next; p-next=q-next; e=q-data; free(q); return e; int Count(LinkList L,ElemType e)/查找元素的位置 LinkList *p=L.next; int n=1; while(p) if(p-data=e) return n; n+; p=p-next; return 0;