精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

雙向循環(huán)單鏈表-創(chuàng)新互聯(lián)

//函數(shù)聲明:#include"cirtwowaylinklist.h"

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include

typedef int ElemType;
typedef struct CirDulNode
{
	struct CirDulNode *prior;
	ElemType data;
	struct CirDulNode *next;
}DulNode;

void judgement_NULL(DulNode *head);
DulNode * creat();                                     //創(chuàng)建鏈表

void insert(DulNode *head, int i, ElemType x);         //插入結(jié)點

void delete_element(DulNode *head, ElemType x);         //刪除鏈表中所有值為X的結(jié)點
void delete_place(DulNode *head, int i);                //刪除鏈表中第i個結(jié)點

void find_place(DulNode *head, ElemType x);             //尋找鏈表中所有x,所在的結(jié)點位置
void find_element(DulNode *head, int i);                //尋找第i個結(jié)點上的值

void length(DulNode *head);

void initslinklist(DulNode *head);                        //釋放整個鏈表

void sortrank(DulNode *head);                             //對鏈表進(jìn)行排序

void output_order(DulNode *head);      //正序打印
void output_back(DulNode *head);       //逆序打印

int means();                           //選擇方式




//函數(shù)實現(xiàn):#include"cirtwowaylinklist.c"

#include"cirtwowaylinklist.h"
void judgement_NULL(DulNode *head)              //判斷動態(tài)內(nèi)存是否開辟成功
{
	if (head == NULL)
	{
		perror("out of memory\n");
		exit(EXIT_FAILURE);
	}
}

DulNode * creat()
{
	DulNode *head, *p, *r;
	ElemType x;
	head = (DulNode *)malloc(sizeof(DulNode));
	judgement_NULL(head);
	r = head;
	printf("開始建立:");
	while (1)
	{
		scanf("%d", &x);
		if (x != 0)                          //建立鏈表,以0作為結(jié)束標(biāo)志 
		{
			p = (DulNode *)malloc(sizeof(DulNode));
			judgement_NULL(p);
			p->data = x;
			r->next = p;
			p->prior = r;
			r = p;
		}
		else
			break;
	}
	head->prior = r;                                 //將鏈表首尾鏈接
	r->next = head;
	printf("創(chuàng)建成功\n");
	return head;
}

void insert(DulNode *head, int i, ElemType x)             //在i位置上插入一個X,因為鏈表循環(huán),所以i>1就一定能找到一個位置
{
	DulNode *p, *r;
	p = (DulNode *)malloc(sizeof(DulNode));
	judgement_NULL(p);
	p->data = x;
	r = head;
	while (1)
	{
		if (i <= 1)
			break;
		r = r->next;
		i--;
	}
	if (i < 1)
		printf("沒有該結(jié)點\n");
	else
	{
		p->next = r->next;                     //在頭結(jié)點之前,之后都可以插入
		p->prior = r;
		r->next = p;
		p->next->prior = p;
	}
}

void delete_element(DulNode *head, ElemType x)          //刪除鏈表中所有的x元素所在的結(jié)點
{
	DulNode *p, *r;
	int count = 0;
	p = head->next;
	while (p != head)
	{
		if (p->data == x)
		{
			count++;
			r = p;
			p = p->next;
			r->prior->next = r->next;
			r->next->prior = r->prior;
			free(r);
			r = NULL;
		}
		else
			p = p->next;
	}
	if (count == 0)
		printf("鏈表中沒有此元素\n");
	else
		printf("共刪除%d個\n", count);
} 

void delete_place(DulNode *head, int i)        //刪除一個指定位置的結(jié)點,結(jié)點位置i>0
{
	DulNode *p;
	p = head;
	while (1)
	{
		if (i <= 1)
			break;
		p = p->next;
		i--;
	}
	if (i < 1)
		printf("沒有該結(jié)點\n");
	else
	{
		if (p->next = head)           //如果要刪除的結(jié)點是頭結(jié)點則跳過刪除頭結(jié)點之后的結(jié)點
		{
			p = head->next;
			head->next = p->next;
			p->next->prior = head;
		}
		else
		{
			p->prior->next = p->next;
			p->next->prior = p->prior;
			free(p);
		}
	}
}

void find_place(DulNode *head, ElemType x)       //找到鏈表中所有的x元素所在的結(jié)點位置
{
	int count = 0;
	int flag = 0;
	DulNode *p;
	p = head->next;
	while (p != head)
	{
		count++;
		if (p->data == x)
		{
			flag++;
			printf("此元素結(jié)點位置:%d\n", count);
		}
		p = p->next;
	}
	if (flag == 0)
		printf("鏈表中沒有此元素\n");
}

void find_element(DulNode *head, int i)           //找到i結(jié)點上的元素,并輸出
{
	DulNode *p;
	p = head->next;
	while (p != head)
	{
		if (i <= 1)
			break;
		p = p->next;
		i--;
	}
	if (p == head || i != 1)
		printf("沒有該結(jié)點\n");
	else
		printf("此結(jié)點元素:%d\n", p->data);
}

void length(DulNode *head)
{
	int len = 0;
	DulNode *p;
	p = head->next;
	while (p != head)
	{
		len++;
		p = p->next;
	}
	printf("鏈表長度:%d\n", len);
}

void initslinklist(DulNode *head)               //釋放整個鏈表
{
	DulNode *p;
	p = head->next;
	while (p != head)
	{
		p = p->next;
		free(p->prior);
		p->prior = NULL;
	}
	free(head);
	head = NULL;
	p = NULL;
}

void sortrank(DulNode *head)                       //對整個鏈表進(jìn)行排序
{
	DulNode *p, *r;
	ElemType tmp;
	p = head->next;
	while (p->next!= head)
	{
		r = head->next;
		while (r->next!= head)
		{
			if ((r->data) >(r->next->data))
			{
				tmp = r->data;
				r->data = r->next->data;
				r->next->data = tmp;
			}
			r = r->next;
		}
		p=p->next;
	}
	printf("排序成功\n");
}


void output_order(DulNode *head)                   //正向打印整個鏈表
{
	DulNode *p;
	p = head;
	if (head->next == head)
		printf("鏈表為空\n");
	else
	{
		printf("正序打印鏈表:");
		p = p->next;
		while (p != head)
		{
			printf("%d ", p->data);
			p = p->next;
		}
		printf("\n");
	}
}

void output_back(DulNode *head)                   //反向打印整個鏈表
{
	DulNode *p;
	p = head->prior;
	if (head->next == head)
		printf("鏈表為空\n");
	else
	{
		printf("反向打印鏈表:");
		while (p != head)
		{
			printf("%d ", p->data);
			p = p->prior;
		}
		printf("\n");
	}
}

int means()                                          //選擇以哪種方式進(jìn)行操作
{
	int m = 0;
	while (1)
	{
		printf("請選擇方式:");
		scanf("%d", &m);
		if (m == 1 || m == 2)
			break;
		printf("選擇無效,請重新選擇\n");
	}
	return m;
}







//函數(shù)測試:

#include"cirtwowaylinklist.h"
int main()
{
	DulNode *ret = NULL;
	int n = 0;
	int i = 0;
	ElemType x;
	printf("*********************************************\n");
	printf("*********************************************\n");
	printf("*1.CreatLinkList          2.Insert **********\n");
	printf("*3.Delete                 4.Find   **********\n");
	printf("*5.Length                 6.Output **********\n");
	printf("*7.InitsLinkLinst         8.Sortrank ********\n");
	printf("*0.Exit                   *******************\n\n\n");

	while (1)
	{
		printf("請選擇功能:");
		scanf("%d", &n);
		if (n == 0)                          //選擇0直接退出
		{
			free(ret);                       //退出前先釋放列表
			exit(1);
		}
		if (ret == NULL)                     //如果ret為空,則首先建立鏈表
		{
			if (n == 1)
			{
				printf("創(chuàng)建鏈表以0作為結(jié)束標(biāo)志\n");
				ret = creat();
			}
			else
				printf("請先建立鏈表\n");
		}
		else
		{
			switch (n)                              //選擇剩下的功能
			{
			case 1:                             //當(dāng)ret不為空時不能建立鏈表
				printf("當(dāng)前鏈表未結(jié)束,請先初始化鏈表\n");
				break;
			case 2:
				printf("請輸入要插入的元素和位置:");
				scanf("%d", &x);
				scanf("%d", &i);
				insert(ret, i, x);
				break;
			case 3:
				printf("*1.delete_element     2.delete_place*\n");
				if (means() == 1)
				{
					printf("請輸入要刪除的元素:");
					scanf("%d", &x);
					delete_element(ret, x);
				}
				else
				{
					printf("請輸入要刪除的結(jié)點:");
					scanf("%d", &i);
					delete_place(ret, i);
				}
				break;
			case 4:
				printf("*1.find_place         2.find_element*\n");
				if (means() == 1)
				{
					printf("請輸入要查找的元素:");
					scanf("%d", &x);
					find_place(ret, x);
				}
				else
				{
					printf("請輸入要查找的位置:");
					scanf("%d", &i);
					find_element(ret, i);
				}
				break;
			case 5:
				length(ret);
				break;
			case 6:
				printf("*1.output_order         2.output_back*\n");
				if (means() == 1)
					output_order(ret);
				else
					output_back(ret);
				break;
			case 7:                                      //將當(dāng)前鏈表釋放
				initslinklist(ret);
				ret = NULL;
				break;
			case 8:
				sortrank(ret);
				break;
			default:
				printf("選擇無效,請重新選擇\n");
				break;
			}                                                //switch()語句結(jié)束
		}
		n = 0;
	}                                                        //循環(huán)結(jié)束
	system("pause");
	return 0;
}

雙向循環(huán)單鏈表

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),東蘭企業(yè)網(wǎng)站建設(shè),東蘭品牌網(wǎng)站建設(shè),網(wǎng)站定制,東蘭網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,東蘭網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。


網(wǎng)頁名稱:雙向循環(huán)單鏈表-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://m.jcarcd.cn/article/dcghjd.html
主站蜘蛛池模板: 乱伦日本影视 | 日韩午夜福利电影 | 九九免费视频网站 | 日韩中文福 | 日韩一级品 | 日本不卡不卡 | 精品绿帽视频 | 97色伦| 国产精品尤物视频 | 区二区免费网站 | 欧美三级在线播放 | 91热成人精品国 | 97在线人人 | 日韩在线一区 | 日韩女神精品自拍 | 蜜桃视频免费 | 精品福利导航视频 | 最新影视剧高清在线观看 | 成人观看的视频三级 | 福利导航网址页面 | 国产精品系列在线 | 国产专区91| 国产精品视频 | 国产理论在线观看 | 国产精品视频一区二 | 欧美一二区视频 | 日韩影院 | 午夜国产福利 | 中文字幕69页 | 91网站在线播放 | 激情五月天深爱网 | 麻花影视| 日韩传电影 | 日本欧美国产 | 日本高清中 | 国产午夜在线免费 | 国产精品偷伦视频免 | 精品电影在线观看 | 九一香蕉 | 3D成人性动漫入口 | 91女同|