国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據結構day06(單向循環(huán)鏈表、雙向鏈表)

這篇具有很好參考價值的文章主要介紹了數(shù)據結構day06(單向循環(huán)鏈表、雙向鏈表)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

數(shù)據結構day06(單向循環(huán)鏈表、雙向鏈表),數(shù)據結構,鏈表

雙向鏈表的練習代碼

head.h

#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int database;
typedef struct double_link_list{
	union{
		database data;
		int len;
	};
	struct double_link_list* pre;
	struct double_link_list* next;

}dbLinkList,*dbLinkListp;

dbLinkListp head_create();
dbLinkListp create(database data);
int head_insert(dbLinkListp head,database data);
int tail_insert(dbLinkListp head,database data);
int output(dbLinkListp head);
int head_delete(dbLinkListp head);
int tail_delete(dbLinkListp head);
int pos_insert(dbLinkListp head,int pos,database data);
int pos_delete(dbLinkListp head,int pos);

#endif

fun.c

#include "head.h"
/*
 * function:    頭結點創(chuàng)建
 * @param [ in] 
 * @param [out] 
 * @return      
 */
dbLinkListp head_create(){
	dbLinkListp head=(dbLinkListp)malloc(sizeof(dbLinkList));
	if(NULL==head){
		puts("malloc is NULL,failed");
		return NULL;
	}
	head->pre=NULL;
	head->next=NULL;
	head->len=0;
	return head;
}
/*
 * function:    創(chuàng)建節(jié)點
 * @param [ in] 
 * @param [out] 
 * @return      
 */
dbLinkListp create(database data){
	dbLinkListp new=(dbLinkListp)malloc(sizeof(dbLinkList));
	if(NULL==new){
		puts("malloc is NULL,failed");
		return NULL;
	}
	new->data=data;
	new->pre=NULL;
	new->next=NULL;
	puts("node create success");
	return new;
}
/*
 * function:    判空
 * @param [ in] 
 * @param [out] 
 * @return      
 */
int void_point(dbLinkListp head){
	if(NULL==head){
		puts("----why give me a null head point----");
		return -1;
	}
	return 0;
}
/*
 * function:    頭插
 * @param [ in] 
 * @param [out] 
 * @return      
 */
int head_insert(dbLinkListp head,database data){
	if(void_point(head))
		return -1;
	//頭插
	dbLinkListp new=create(data);
	new->next=head->next;
	if(head->next!=NULL)
		new->next->pre=new;
	head->next=new;
	new->pre=head;

	head->len++;
	puts("head insert success");
	return 0;
}
/*
 * function:    尾插
 * @param [ in] 
 * @param [out] 
 * @return      
 */
int tail_insert(dbLinkListp head,database data){
	if(void_point(head))
		return -1;
	//尾插
	dbLinkListp p=head;
	while(p->next!=NULL)
		p=p->next;
	dbLinkListp new=create(data);

	new->next=p->next;
	new->pre=p;
	p->next=new;

	head->len++;
	puts("tail insert success.");
	return 0;
}
/*
 * function:    輸出
 * @param [ in] 
 * @param [out] 
 * @return      
 */
int output(dbLinkListp head){
	if(void_point(head))
		return -1;
	while(head->next!=NULL){
		printf("%d\t",head->next->data);
		head=head->next;
	}
	puts("output done");
	return 0;
}
/*
 * function:   頭刪
 * @param [ in] 
 * @param [out] 
 * @return      
 */
int head_delete(dbLinkListp head){
	if(void_point(head))
		return -1;
	if(head->next==NULL){
		puts("there is no assignment to delete.");
		return -1;
	}
	dbLinkListp del=head->next;
	if(head->next->next!=NULL)
	head->next->next->pre=head;
	head->next=head->next->next;

	free(del);
	del=NULL;
	head->len--;
	puts("head_delete success");
	return 0;
}
/*
 * function:    尾刪
 * @param [ in] 
 * @param [out] 
 * @return      
 */
int tail_delete(dbLinkListp head){
	if(void_point(head))
		return -1;
	if(head->next==NULL){
		puts("there is no assignment to delete.");
		return -1;
	}
	dbLinkListp p=head;
	//找到倒數(shù)第一個
	while(p->next!=NULL){
		p=p->next;
	}
	p->pre->next=p->next;
	free(p);
	p=NULL;
	head->len--;
	puts("tail delete success");
	return 0;
}
/*
 * function:    指定位置插入
 * @param [ in] 
 * @param [out] 
 * @return      
 */
int pos_insert(dbLinkListp head,int pos,database data){
	if(void_point(head))
		return -1;

	//判斷位置合理性
	if(pos<1||pos>head->len+1){
		puts("your position is illegal");
		return -1;
	}
	dbLinkListp p=head;
	//找到指定位置前一位
	while(pos--!=1){
		p=p->next;
	}
	dbLinkListp new=create(data);

	if(p->next!=NULL){
		new->next=p->next->next;
		p->next->next->pre=new;
	}
	new->pre=p;
	p->next=new;

	head->len++;
	puts("pos insert success");
	return 0;
}
/*
 * function:    指定位置刪除
 * @param [ in] 
 * @param [out] 
 * @return      
 */
int pos_delete(dbLinkListp head,int pos){
	if(void_point(head))
		return -1;
	if(head->next==NULL){
		puts("there is no assignment to delete.");
		return -1;
	}
	//判斷位置合理性
	if(pos<1||pos>head->len){
		puts("your position is illegal");
		return -1;
	}
	dbLinkListp p=head;
	//找到指定位置前一位
	while(pos--!=1){
		p=p->next;
	}
	printf("pos-1=%d\t",p->data);
	//刪除
	dbLinkListp del=p->next;
	p->next=p->next->next;
	if(p->next!=NULL)
		p->next->pre=p;

	free(del);
	del=NULL;
	puts("pos delete success");
	return 0;
}

main.c

#include "head.h"
int main(int argc, const char *argv[])
{
	dbLinkListp head=head_create();
	head_insert(head,9);
	head_insert(head,8);
	head_insert(head,6);
	head_insert(head,5);
	tail_insert(head,7);
	output(head);
	//head_delete(head);
	//tail_delete(head);
	//pos_insert(head,6,66);
	//pos_delete(head,5);
	output(head);


	return 0;
}

今日思維導圖哈

數(shù)據結構day06(單向循環(huán)鏈表、雙向鏈表),數(shù)據結構,鏈表數(shù)據結構day06(單向循環(huán)鏈表、雙向鏈表),數(shù)據結構,鏈表???????文章來源地址http://www.zghlxwxcb.cn/news/detail-690073.html

到了這里,關于數(shù)據結構day06(單向循環(huán)鏈表、雙向鏈表)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 數(shù)據結構 - 鏈表詳解(二)—— 帶頭雙向循環(huán)鏈表

    數(shù)據結構 - 鏈表詳解(二)—— 帶頭雙向循環(huán)鏈表

    鏈表的結構一共有 八種 :帶頭單向循環(huán)鏈表、帶頭單向非循環(huán)鏈表、帶頭雙向循環(huán)鏈表、帶頭雙向非循環(huán)鏈表、無頭單向循環(huán)鏈表、無頭單向非循環(huán)鏈表、無頭雙向循環(huán)鏈表、無頭雙向非循環(huán)鏈表。 今天我們來詳解帶頭雙向循環(huán)鏈表 帶頭雙向循環(huán)鏈表是一種數(shù)據結構,它通

    2024年04月26日
    瀏覽(19)
  • 【數(shù)據結構初階】三、 線性表里的鏈表(無頭+單向+非循環(huán)鏈表 -- C語言實現(xiàn))

    【數(shù)據結構初階】三、 線性表里的鏈表(無頭+單向+非循環(huán)鏈表 -- C語言實現(xiàn))

    ========================================================================= 相關代碼gitee自取 : C語言學習日記: 加油努力 (gitee.com) ?========================================================================= 接上期 : 【數(shù)據結構初階】二、 線性表里的順序表(C語言實現(xiàn)順序表)-CSDN博客 ?=========================

    2024年02月08日
    瀏覽(33)
  • 【數(shù)據結構】—帶頭雙向循環(huán)鏈表的實現(xiàn)(完美鏈表)

    【數(shù)據結構】—帶頭雙向循環(huán)鏈表的實現(xiàn)(完美鏈表)

    鏈表結構一共有八種形式,在前面的文章里已經講完了不帶頭單向非循環(huán)鏈表的實現(xiàn),但是我們發(fā)現(xiàn)該鏈表實現(xiàn)尾插與尾刪時比較麻煩,要先從頭節(jié)點進行遍歷,找到尾節(jié)點,時間復雜度為O(N),而本次所講的帶頭雙向循環(huán)單鏈表,則可以直接找到尾節(jié)點。 雖然該鏈表看起來

    2024年01月25日
    瀏覽(16)
  • 【數(shù)據結構】鏈表:帶頭雙向循環(huán)鏈表的增刪查改

    【數(shù)據結構】鏈表:帶頭雙向循環(huán)鏈表的增刪查改

    本篇要分享的內容是帶頭雙向鏈表,以下為本片目錄 目錄 一、鏈表的所有結構 二、帶頭雙向鏈表 2.1尾部插入 2.2哨兵位的初始化 2.3頭部插入 2.4 打印鏈表 2.5尾部刪除 2.6頭部刪除 ?2.7查找結點 2.8任意位置插入 2.9任意位置刪除? 在剛開始接觸鏈表的時候,我們所學僅僅所學的

    2024年02月05日
    瀏覽(28)
  • 數(shù)據結構_鏈表_單向循環(huán)鏈表的初始化、插入、刪除、修改、查詢打?。ɑ贑語言實現(xiàn))

    數(shù)據結構_鏈表_單向循環(huán)鏈表的初始化、插入、刪除、修改、查詢打?。ɑ贑語言實現(xiàn))

    版本: 2024年4月25日 V1.0 發(fā)布于博客園 目錄 目錄 單向循環(huán)鏈表公式 初始化單向循環(huán)鏈表 構建單向循環(huán)鏈表結點 創(chuàng)建一個空鏈表(僅頭結點) 創(chuàng)建一個新結點 插入數(shù)據 頭插 中插 尾插 刪除數(shù)據 頭刪 中刪 尾刪 查詢打印數(shù)據 遍歷打印 測試 測試結果: 完整代碼 CircularLinkedLis

    2024年04月25日
    瀏覽(49)
  • 數(shù)據結構入門(C語言版)線性表中鏈表介紹及無頭單向非循環(huán)鏈表接口實現(xiàn)

    數(shù)據結構入門(C語言版)線性表中鏈表介紹及無頭單向非循環(huán)鏈表接口實現(xiàn)

    概念 : 線性表的鏈式存儲結構的特點是用一組任意的存儲單元存儲線性表的數(shù)據元素 。因此,為了表示每個數(shù)據元素與其直接后繼數(shù)據元素之間的邏輯關系,對數(shù)據元素來說,除了存儲其本身的信息之外,還需存儲一個指示其直接后繼的信息(即直接后繼的存儲位置)。這

    2023年04月09日
    瀏覽(30)
  • 【數(shù)據結構和算法】實現(xiàn)帶頭雙向循環(huán)鏈表(最復雜的鏈表)

    【數(shù)據結構和算法】實現(xiàn)帶頭雙向循環(huán)鏈表(最復雜的鏈表)

    前文,我們實現(xiàn)了認識了鏈表這一結構,并實現(xiàn)了無頭單向非循環(huán)鏈表,接下來我們實現(xiàn)另一種常用的鏈表結構,帶頭雙向循環(huán)鏈表。如有仍不了解單向鏈表的,請看這一篇文章(7條消息) 【數(shù)據結構和算法】認識線性表中的鏈表,并實現(xiàn)單向鏈表_小王學代碼的博客-CSDN博客

    2024年01月17日
    瀏覽(26)
  • 數(shù)據結構:鏈表基礎OJ練習+帶頭雙向循環(huán)鏈表的實現(xiàn)

    數(shù)據結構:鏈表基礎OJ練習+帶頭雙向循環(huán)鏈表的實現(xiàn)

    目錄 一.leetcode劍指 Offer II 027.?回文鏈表 1.問題描述 2.問題分析與求解 (1) 快慢指針法定位鏈表的中間節(jié)點 (2)?將鏈表后半部分進行反轉 附:遞歸法反轉鏈表 (3)?雙指針法判斷鏈表是否回文 二.帶頭雙向循環(huán)鏈表的實現(xiàn) 1.頭文件 2.節(jié)點內存申請接口和鏈表初始化接口 3.鏈表的打

    2024年02月02日
    瀏覽(29)
  • 『初階數(shù)據結構 ? C語言』⑨ - 基于結點的數(shù)據結構——鏈表(單鏈表&&雙向循環(huán)鏈表)附完整源碼

    『初階數(shù)據結構 ? C語言』⑨ - 基于結點的數(shù)據結構——鏈表(單鏈表&&雙向循環(huán)鏈表)附完整源碼

    ? 本章內容 1.什么是鏈表 2.鏈表常見幾種形式 3.無頭單向非循環(huán)鏈表的實現(xiàn) 3.1結點結構的定義 3.2函數(shù)接口的實現(xiàn) 3.2.1尾插 3.2.2尾刪 4. 帶頭雙向循環(huán)鏈表的實現(xiàn) 4.1結點結構的定義 4.2函數(shù)接口的實現(xiàn) 5.兩種鏈表的差異 ①尾插與尾刪的時間復雜度 ②頭插與頭刪的時間復雜度 ③

    2024年02月16日
    瀏覽(92)
  • 鏈接未來:深入理解鏈表數(shù)據結構(二.c語言實現(xiàn)帶頭雙向循環(huán)鏈表)

    鏈接未來:深入理解鏈表數(shù)據結構(二.c語言實現(xiàn)帶頭雙向循環(huán)鏈表)

    上篇文章簡述講解了鏈表的基本概念并且實現(xiàn)了無頭單向不循環(huán)鏈表:鏈接未來:深入理解鏈表數(shù)據結構(一.c語言實現(xiàn)無頭單向非循環(huán)鏈表)-CSDN博客 那今天接著給大家?guī)韼ь^雙向循環(huán)鏈表的實現(xiàn) : 頭文件DoubleList.h:用來基礎準備(常量定義,typedef),鏈表表的基本框架

    2024年01月16日
    瀏覽(57)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包