• 大小: 803KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: 其他
  • 标签: 数据结构  

资源简介

双向聊表的实现细节以及菜单显示,对数据结构的同学很有帮助,有注释!大学必备源码,可直接运行,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\link.command.1.tlog
     文件        2482  2016-09-12 16:42  双向链表\Debug\双向链表.tlog\link.read.1.tlog
     文件         612  2016-09-12 16:42  双向链表\Debug\双向链表.tlog\link.write.1.tlog
     文件         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

评论

共有 条评论