资源简介
双向聊表的实现细节以及菜单显示,对数据结构的同学很有帮助,有注释!大学必备源码,可直接运行,c程序设计加数据结构
代码片段和文件信息
/**********************************双向链表************************
* 双向链表 *
* 完成日期:2016.9.10 *
* 编译环境:VC6.0 *
* 说明:初始化时只能输入0-9只有插入时可输入int整数 *
******************************************************************/
#define _CRT_SECURE_NO_DEPRECATE
#include
#include
#include
#include
//输出菜单menu函数
void printmenu()
{
printf(“\n1.建立双向链表(初始化)\n2.打印双向链表\n3.逆序打印双向链表\n“);
printf(“4.求链表的长度\n5.判断链表是否为空\n6.清空链表\n“);
printf(“7.插入元素\n8.删除元素\n9.删除链表\n0.退出\n“);
}
//定义结点结构,双向链表结点
typedef struct DuLnode
{
int data;
struct DuLnode *prior; //前驱指针
struct DuLnode *next; //后继指针
}DuLnode*DulinkList;
//初始化双向链表
void InitDlist(DulinkList &L)
{
int x; //定义成char型是用于输入‘q‘时可以退出,其实定义成int也能退出
DulinkList p q;
L = (DulinkList)malloc(sizeof(DuLnode));
L->next = NULL;
L->prior = NULL;
p = L;
printf(“输入双向链表的元素,每输入一个后按回车,输入0表示结束.\n“);
fflush(stdin);
scanf(“%d“&x);
while (x!=0 )
{
q = (DulinkList)malloc(sizeof(DuLnode));
q->data = x ; //数字字符的ASCLL码减去48得到该数字
q->next =NULL ;
q->prior = p;
p->next = q;
p = q;
fflush(stdin);
scanf(“%d“ &x);
}
if (x ==0) printf(“双向链表构建完毕!\n“);
}
//输出链表函数
void printDList(DulinkList &L)
{
DulinkList p;
if (L == NULL)
{
printf(“链表不存在,请先初始化!\n“);
}
else if(L->next == NULL)
{
p = L->next; //避免p为野指针,赋值为NULL
printf(“链表中没有结点,空!\n“);
}
else
{
p = L->next;
while (p)
{
printf(“%d “ p->data);
p = p->next;
}
}
}
//逆序打印双向链表
void printDListFromLast(DulinkList &L)
{
DulinkList p;
if (L == NULL)
{
printf(“链表不存在,请先初始化!\n“);
}
else if (L->next == NULL)
{
p = L->next;
printf(“链表中没有结点,空!\n“);
}
else
{
p = L->next;
while (p->next)
{
p = p->next;
}
while (p->prior)
{
printf(“%d “ p->data);
p = p->prior;
}
}
}
//求链表长度函数
int LenghtDList(DulinkList L)
{
int n=0;
DulinkList p;
if (L == NULL)
{
printf(“链表不存在,请先建立!\n“);
}
else
{
p = L->next;
while (p)
{
n++;
p = p->next;
}
}
return n;
}
void EmptyDuList(DulinkList L)
{
if (L == NULL)
{
printf(“链表不存在,请先初始化!\n“);
}
else if (L->next == NULL)
{
printf(“链表为空!\n“);
}
else
{
printf(“链表不为空!\n“);
}
}
//把双向链表清空
void ClearDuList(DulinkList &L)
{
if (L == NULL)
{
printf(“链表不存在,请先初始化!\n“);
}
else if (L->next == NULL)
{
printf(“链表本身为空!\n“);
}
else
{
DulinkList p q;
p = q = L->next; //p、q指向第一个元素
L->next = NULL;
while (p) //逐渐释放元素所占内存
{
p = p->next;
free(q);
q = p;
}
}
}
void DelDList(DulinkList &L)
{
ClearDuList(L);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-09-12 17:01 双向链表\
目录 0 2016-09-12 16:42 双向链表\Debug\
文件 60416 2016-09-12 16:42 双向链表\Debug\vc120.idb
文件 86016 2016-09-12 16:42 双向链表\Debug\vc120.pdb
文件 36352 2016-09-12 16:42 双向链表\Debug\双向链表.exe
文件 255976 2016-09-12 16:42 双向链表\Debug\双向链表.ilk
文件 1635 2016-09-12 16:42 双向链表\Debug\双向链表.log
文件 26767 2016-09-12 16:42 双向链表\Debug\双向链表.obj
文件 502784 2016-09-12 16:42 双向链表\Debug\双向链表.pdb
目录 0 2016-09-12 16:42 双向链表\Debug\双向链表.tlog\
文件 4284 2016-09-12 16:42 双向链表\Debug\双向链表.tlog\CL.read.1.tlog
文件 1048 2016-09-12 16:42 双向链表\Debug\双向链表.tlog\CL.write.1.tlog
文件 1410 2016-09-12 16:42 双向链表\Debug\双向链表.tlog\cl.command.1.tlog
文件 1308 2016-09-12 16:42 双向链表\Debug\双向链表.tlog\li
文件 2482 2016-09-12 16:42 双向链表\Debug\双向链表.tlog\li
文件 612 2016-09-12 16:42 双向链表\Debug\双向链表.tlog\li
文件 201 2016-09-12 16:42 双向链表\Debug\双向链表.tlog\双向链表.lastbuildstate
文件 6448 2016-09-12 16:42 双向链表\双向链表.cpp
文件 2621440 2016-09-12 17:01 双向链表\双向链表.sdf
文件 969 2016-09-10 18:34 双向链表\双向链表.sln
文件 23040 2016-09-12 17:01 双向链表\双向链表.v12.suo
文件 4097 2016-09-12 16:41 双向链表\双向链表.vcxproj
文件 953 2016-09-12 16:41 双向链表\双向链表.vcxproj.filters
相关资源
- 东北大学数据结构实验2欧洲旅行
- 数据结构实验报告
- 数据结构试验报告 华北电力大学科技
- 王道2019数据结构视频链接.txt
- 图的操作—数据结构
- 454656数据结构《家族关系查询系统》
- 用二次探测再散列法解决冲突建立哈
- 数据结构迷宫问题实验报告
- 数据结构课程设计 哈夫曼编码的数据
- 变长记录文件存取类库数据结构大作
- 数据结构二叉树实验报告源代码及运
- 东北大学数据结构实验课设
- 东北大学数据结构课程设计
- 数据结构校园导航数据结构
- c编写的数据结构创建顺序表、链表、
- 数据结构之集合的并、交和差运算
- 数据结构程序设计-迷宫问题
- 数据结构 作业报告 实验5查找排序
- 数据结构员工管理系统
- 数据结构- 矩阵的压缩存储(代码+报
- 链表实现学生管理
- 数据结构实验-链式存储和顺序存储实
- 严蔚敏《数据结构》全部代码实现
- huffman树的构造
- 数据结构与算法教学大纲程序代码
- 哈夫曼编码/译码器数据结构课程设计
- 数据结构考试
- 邓俊辉老师的数据结构与算法课程代
- 数据结构算法二叉树实现
- 数据结构殷人昆答案
评论
共有 条评论