码迷,mamicode.com
首页 > Web开发 > 详细

<html>

时间:2017-08-16 14:07:56      阅读:361      评论:0      收藏:0      [点我收藏+]

标签:timeout   软件开发   elf   close   target   通用   one   算法   closed   

源文件部分:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef int Elemtype;
#include"Delist.h"
int main()
{
	Dlnode head=NULL;
	instruction(head);
	return 0;
}
头文件部分:
typedef struct DLnode        
{
	Elemtype data;
	struct DLnode *prior;    //节点的声明定义
	struct DLnode *next;
}DLnode,*Dlnode;

void Init_Dlist(Dlnode &head)    //循环双向初始化 
{
	head=(Dlnode)malloc(sizeof(DLnode));
	head->prior=head;
	head->next=head;
}

int Empty_Dlist(Dlnode head)       //双向判空
{
	if(head->prior==head&&head->next==head)
		return 1;
	return 0;
}

void Insert_Dlist(DLnode *head,Elemtype e)   //头插法-双向(新增)
{
	Dlnode p=NULL;
	p=(DLnode *)malloc(sizeof(DLnode));            //由于是双向循环链表,所以不存在双向的那个问题
	if(!p)
	{
		printf("对不起,已无很多其它的内存单元得到分配!!!\n");
		return ;
	}
	p->data=e;
	p->next=head->next;
	p->next->prior=p;
	p->prior=head;
//	printf("*%d*\n",head->next);
	head->next=p;
}

int Length_Dlist(Dlnode head)
{
	DLnode *p=NULL;
	int len=0;
	if(Empty_Dlist(head))
		return 0;
	p=head->next;
	while(p!=head)
	{
		len++;
		p=p->next;
	}
	return len;
}

int Delete_Dlist(DLnode *head,Elemtype where)        //按位置删除
{
	DLnode *p=NULL;
	int i=1;
	p=head->next;
	if(Empty_Dlist(head))
	{
		printf("对不起,链表是空的,无法完毕删除操作!!!\n");
		return 0;
	}
	if(where>Length_Dlist(head)||where<0)
	{
		printf("对不起,你删除的位置是不合法的,请又一次输入!!!\n");
		return 0;
	}
	while(i<where)
	{
		p=p->next;
		i++;
	}
	p->prior->next=p->prior->next->next;
	p->prior->next->prior=p->prior;
	printf("删除成功!!!\n");
	return p->data;
}

void Insearch_Dlist(Dlnode head,Elemtype e)      //按元素查找  
{
	DLnode *p=NULL;
	int len=1;
	if(Empty_Dlist(head))
	{
		printf("对不起,链表是空的,无法完毕查找操作!!!\n");
		return ;
	}
	p=head->next;
	while(p!=head)
	{
		if(p->data==e)
		{
			printf("你要查找的元素位于链表的第%d个位置上.\n",len);
			return ;
		}
		p=p->next;
		len++;
	}
	printf("对不起,你要查找的元素不存在,请又一次输入!!!\n");
	return ;
}

void Modify_Dlist(DLnode *head,Elemtype where,Elemtype e)    //按位置改动
{
	DLnode *p=NULL;
	int len=1;
	p=head->next;
	while(len<where)
	{
		p=p->next;
		len++;
	}
	p->data=e;
	printf("改动成功!\n");
	return ;
}

void Print_Dlist(Dlnode head)          //打印操作
{
	Dlnode p=head->next;
	if(Empty_Dlist(head))
	{
		printf("对不起,链表是空的,无法完毕打印操作!!!\n");
		return ;
	}
	while(head!=p)
	{
		printf("%d ",p->data);
		p=p->next;
	}
	printf("\n");
	return ;
}

void Destory_Dlist(Dlnode head)            //销毁清空操作
{
	Dlnode p=head->next;
	while(p!=head)
	{
		p->prior->next=p->next;
		p->next->prior=p->prior;
		p=head->next;
	}
	printf("销毁成功!\n");
}

void instruction(Dlnode head)             //功能函数 
{
	int n,m,t,a,b,len1,index;
	printf("\t\t1、初始操作\n");
	printf("\t\t2、新增操作\n");              //为什么不能在这里定义head指针---由于每次调用功能函数后,head指针又被又一次初始化了    
	printf("\t\t3、删除操作\n");
	printf("\t\t4、查找操作\n");
	printf("\t\t5、改动操作\n");
	printf("\t\t6、销毁操作\n");
	printf("\t\t7、求长操作\n");
	printf("\t\t8、打印操作\n");
	printf("\t\t9、退出程序\n");
	printf("请输入你所须要完毕的指令:\n");
	do{
		scanf("%d",&n);
		if(n<1||n>9)
			printf("对不起。你输入的指令编号是无效的。请又一次输入!!!\n");
	}while(n<1||n>9);
	switch(n)
	{
		case 1:
			Init_Dlist(head);            //初始化操作
			printf("已完毕双向链表初始化,请输入你要加入的元素个数!\n");
			scanf("%d",&n);
			while(n--)
			{
				int x;
				scanf("%d",&x);
				Insert_Dlist(head,x);
			}
			printf("完毕建表操作!\n");
			break;
		case 2:                                  //新增操作
			if(!head)
			{
				printf("对不起,请先完毕初始化操作再做该选择!!!\n");
				break;
			}
			printf("请输入你要加入的元素个数!\n");
			scanf("%d",&n);
			while(n--)
			{
				int x;
				scanf("%d",&x);
				Insert_Dlist(head,x);
			}
			printf("增添成功!\n");
			break;
		case 3:
			printf("请输入你所要删除的节点的位置:\n");
			scanf("%d",&n);
			Delete_Dlist(head,n);                             //删除操作
			break;
		case 4:
			printf("请输入你所要查找的元素:\n");
			scanf("%d",&m);
			Insearch_Dlist(head,m);                       //查找操作 
			break;
		case 5:
			if(Empty_Dlist(head))
			{
				printf("对不起,链表是空的,无法完毕改动操作!!!\n");
				break ;
			}
			printf("请输入你要更改的元素队列位置:\n");          //改动操作 
			do{
				scanf("%d",&a);
				if(a<1||a>Length_Dlist(head))
					printf("对不起。你所输入的元素位置不在区域内,请又一次输入!!!\n");
			}while(a<1||a>Length_Dlist(head));
			printf("请输入改动后的值:\n");
			scanf("%d",&b);
			Modify_Dlist(head,a,b);
			break;
		case 6:
			Destory_Dlist(head);            //销毁操作 
			break;
		case 7:
			len1=Length_Dlist(head);             //返回链长操作 
			printf("当前链队列的长度为:%d\n",len1);
			break;
		case 8:
			Print_Dlist(head);        //打印操作 
			break;
		case 9:                   //退出操作 
			return;
		default:
			instruction(head);
			break;
	}
	instruction(head);
}

版权声明:本文为博主原创文章,未经博主同意不得转载。 举报
  • 本文已收录于下面专栏:

相关文章推荐

数据结构与算法之六 双向链表和循环链表

在本章中,你将学习: 运行双链接列表 运行循环链接列表 应用链接列表以解决编程问题 如今。考虑一个演示样例,您须要以降序的方式显示这些数字。 怎样解决此问题? 每个节点链接到序列中的...

循环双向链表的创建方法 最简单的循环双向链表

首先讲循环链表,简单来说就是让链表首尾相连。形成一个环,由于一般的链表都是单向的,随意给出的一个节点是不能訪问前面的链节,这就导致了单向链表的局限性,循环链表从一定程度上来说就攻克了这一问题,通过表头...

C#将托管DLL嵌入exe文件

C#将托管DLL嵌入exe文件近期用winForm开发一个小程序,当中用到了HtmlAgilityPack(用于解析html)和Newtonsoft.Json(用于解析json)这两个库,因为编译后生...

Net程序怎样防止被注入(整站通用)

怎样使用(注冊)DirectShow接口

DirectShow是一组经常使用的COM接口组件,当中经常使用的组件有IGraphBuilder。IMediaControl,IMediaEvent接口。这三个接口在本文先不介绍。本文主要是讲讲怎样使用Di...

双向链表-C语言版

[cpp]?view plaincopyprint? 源文件部分:?? #include?? #include?? #include?? typedef?int?...

编程新手导论(转载)

第二部分 导论。这一部分主要是关于编程的导论, (要懂得一点思想具备一点常识)《设计。编码。,与软工》(编程与思想)这一章解释了三种思想,原语,抽象,组合,。和软件开发的二个重要过程,,软件project的相关概念,是编程入门的关键 (要懂得一点领域内的数学)《数学与算法》(编程与数学)计算机整个就是架构在数学上的。跟计算机平台实现。算法设计,,架构密切相关,。真正要深入编程,。。对数学的学习是必须的,。千万不要相

双向循环链表程序(C语言版)

双向循环链表程序(C语言版)?? 2006-08-27 01:49:50|??分类:?软件编程|字号?订阅 http://blog.163.com/huzuhu...

Generic double circular linked list - 通用双向循环链表C语言实现

Generic double circular linked list - 通用双向循环链表C语言实现 cheungmine 双向循环链表是计算机数据结构里面最基础

单链表的操作C语言版

2009年3月24日 13:04 Slyar <span style="color: #297
  • 微博
    微信
    QQ
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多仅仅同意输入30个字)

技术分享

<html>

标签:timeout   软件开发   elf   close   target   通用   one   算法   closed   

原文地址:http://www.cnblogs.com/claireyuancy/p/7372909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
分享档案
周排行
mamicode.com排行更多图片
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!