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

數(shù)據(jù)結(jié)構(gòu)day07(棧和隊列)

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)day07(棧和隊列)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

今日任務(wù)

數(shù)據(jù)結(jié)構(gòu)day07(棧和隊列),數(shù)據(jù)結(jié)構(gòu)

鏈?zhǔn)疥犃校?/h3>

head.h

#ifndef __HEAD_H__
#define __HEAD_H__

#include <stdio.h>
#include <stdlib.h>

typedef int datatype;
typedef struct link_list{
	datatype data;
	struct link_list* next;
}link,*linkp;
typedef struct circulate_line_top{
	linkp front;
	linkp rear;
}link_top,*link_topp;

link_topp create_top();
int push(link_topp p,datatype data);
int pull(link_topp p);
int output(link_topp p);
int del(link_topp p);

#endif

fun.c

#include "head.h"
/*
 * function:    創(chuàng)建top節(jié)點
 * @param [ in] 
 * @param [out] 
 * @return      
 */
link_topp create_top(){
	link_topp top=(link_topp)malloc(sizeof(link_top));
	if(NULL==top){
		puts("top point malloc failed");
		return NULL;
	}
	top->front=NULL;
	top->rear=NULL;
	puts("top point create success");
	return top;
}
/*
 * function:    創(chuàng)新鏈表節(jié)點
 * @param [ in] 
 * @param [out] 
 * @return      
 */
linkp create(datatype data){
	linkp p=(linkp)malloc(sizeof(link));
	if(NULL==p){
		puts("link list point malloc failed");
		return NULL;
	}
	p->data=data;
	p->next=NULL;
	puts("link list point create success");
	return p;
}
/*
 * function:    空指針判定
 * @param [ in] 
 * @param [out] 
 * @return      
 */
int void_point(link_topp p){
	if(NULL==p){
		puts("null point pass");
		return -1;
	}
	return 0;
}
/*
 * function:    判空
 * @param [ in] 
 * @param [out] 
 * @return      
 */
int is_empty(link_topp p){
	if(NULL==p){
		puts("null point pass");
		return -1;
	}
	if(p->front==NULL){
		puts("stack is NULL");
		return 1;
	}
	return 0;
}
/*
 * function:    入隊
 * @param [ in] 
 * @param [out] 
 * @return      
 */
int push(link_topp p,datatype data){
	if(void_point(p))
		return -1;
	linkp new=create(data);
	//入隊
	
	if(p->front==NULL)
		p->front=new;
	if(p->rear!=NULL)
		p->rear->next=new;
	p->rear=new;
	
//	printf("t->front%d\n",p->front->data);
//	printf("t->rear%d\n",p->rear->data);
//	printf("t->front%p\n",p->front);
	puts("push success");
	return 0;
}
/*
 * function:    出隊
 * @param [ in] 
 * @param [out] 
 * @return      
 */
int pull(link_topp p){
	if(void_point(p))
		return -1;
	//判空
	if(p->front==NULL){
		puts("link stack is null ,it's no deed to pull");
		return 0;
	}
	//出隊
	linkp del=p->front;//記錄出隊指針,free
	datatype data=del->data;
	p->front=p->front->next;
	free(del);
	del=NULL;
	puts("pull success");
	return 0;
}
/*
 * function:    循環(huán)輸出
 * @param [ in] 
 * @param [out] 
 * @return      
 */
int output(link_topp p){
	linkp i=p->front;//不移動原指針
	if(void_point(p))
		return -1;
	if(is_empty(p))
		return 0;
	while(i!=NULL){
		printf("<-%d",i->data);
		i=i->next;
	}
	puts("output success");
	return 0;
}
/*
 * function:    銷毀
 * @param [ in] 
 * @param [out] 
 * @return      
 */
int del(link_topp p){
	if(void_point(p))
		return -1;
	linkp del;
	while(p->front!=NULL){
		del=p->front;
		p->front=p->front->next;
		free(del);
	}
	free(p);
	puts("del success");
	return 0;
}

main.c

#include "head.h"
//鏈表實現(xiàn)循環(huán)隊列---尾插頭刪
int main(int argc, const char *argv[])
{
	link_topp t=create_top();
	push(t,11);
	push(t,12);
	push(t,13);
	push(t,14);
	printf("t->front%p\n",t->front);
	output(t);

	printf("t->front%p\n",t->front);
	pull(t);
	output(t);
	pull(t);
	output(t);
	pull(t);
	output(t);
	pull(t);
	output(t);
	pull(t);
	output(t);
	del(t);
	t=NULL;
	return 0;
}

運行效果:

數(shù)據(jù)結(jié)構(gòu)day07(棧和隊列),數(shù)據(jù)結(jié)構(gòu)

遞歸

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int fun(int a){
	printf("%d\n",a%10);
	a/=10;
	if(a>0)
		fun(a);
	return 0;
}
int main(int argc, const char *argv[])
{
	//使用遞歸實現(xiàn)程序,輸入一個數(shù),輸出該數(shù)的每個數(shù)
	int a=123456;
	fun(a);
	return 0;
}

今日思維導(dǎo)圖數(shù)據(jù)結(jié)構(gòu)day07(棧和隊列),數(shù)據(jù)結(jié)構(gòu)文章來源地址http://www.zghlxwxcb.cn/news/detail-685574.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)day07(棧和隊列)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu):棧和隊列

    數(shù)據(jù)結(jié)構(gòu):棧和隊列

    朋友們、伙計們,我們又見面了,本期來給大家解讀一下棧和隊列方面的相關(guān)知識點,如果看完之后對你有一定的啟發(fā),那么請留下你的三連,祝大家心想事成! C 語 言 專 欄:C語言:從入門到精通 數(shù)據(jù)結(jié)構(gòu)專欄:數(shù)據(jù)結(jié)構(gòu) 個 人 主 頁 :??stackY、 目錄 前言:? 1.棧 1.1棧的

    2024年02月06日
    瀏覽(24)
  • 數(shù)據(jù)結(jié)構(gòu)--棧和隊列

    數(shù)據(jù)結(jié)構(gòu)--棧和隊列

    棧是一種常見的數(shù)據(jù)結(jié)構(gòu),它遵循 后進(jìn)先出LIFO (Last In First Out)的原則。 進(jìn)行數(shù)據(jù)插入和操作的一端稱為棧頂,另一端稱為棧底 。 壓棧 :棧的插入操作被稱為壓棧/進(jìn)棧/入棧,入數(shù)據(jù)在棧頂。 出棧 :棧的刪除操作。出數(shù)據(jù)也在棧頂; ??梢杂?數(shù)組 或者是 鏈表 來實現(xiàn);

    2024年02月09日
    瀏覽(27)
  • 數(shù)據(jù)結(jié)構(gòu)---棧和隊列

    棧:一種特殊的線性表,其只允許在固定的一端進(jìn)行插入和刪除元素操作,進(jìn)行數(shù)據(jù)插入和刪除操作的一端稱為棧頂,另一端稱為棧底。棧中的數(shù)據(jù)元素遵守后進(jìn)先出LIFO(Last In First Out)的原則。 壓棧:棧的插入操作叫做進(jìn)棧/壓棧/入棧,入數(shù)據(jù)在棧頂。 出棧:棧的刪除操作

    2024年01月18日
    瀏覽(35)
  • 數(shù)據(jù)結(jié)構(gòu)——棧和隊列

    數(shù)據(jù)結(jié)構(gòu)——棧和隊列

    目錄 ?一.前言 二.前文回顧 三.棧 3.1 棧的概念及結(jié)構(gòu) 3.2 棧的實現(xiàn) 3.2.1 初始化函數(shù) 3.2.2 銷毀函數(shù) 3.2.3 入棧函數(shù) 3.2.4 出棧函數(shù) 3.2.5 計算大小函數(shù) 3.2.6 空棧函數(shù) 3.2.7 獲取棧頂函數(shù) ?3.2.8 小測試 3.3 全部代碼 四.棧的練習(xí) 4.1 有效的括號 五.隊列 5.1隊列的概念及結(jié)構(gòu) 5.2 隊列的實

    2024年01月25日
    瀏覽(22)
  • 棧和隊列【數(shù)據(jù)結(jié)構(gòu)】
  • 數(shù)據(jù)結(jié)構(gòu)【棧和隊列】

    數(shù)據(jù)結(jié)構(gòu)【棧和隊列】

    一、棧 1.定義:只允許一端進(jìn)行插入和刪除的線性表,結(jié)構(gòu)與手槍的彈夾差不多,可以作為實現(xiàn)遞歸函數(shù)(調(diào)用和返回都是后進(jìn)先出)調(diào)用的一種數(shù)據(jù)結(jié)構(gòu); 棧頂:允許插入刪除的那端; 棧底:固定的,不允許插入或刪除; 空棧:不含元素; 2.特點:后進(jìn)先出; 3.操作:入

    2024年02月15日
    瀏覽(28)
  • 【數(shù)據(jù)結(jié)構(gòu)】棧和隊列(鏈表模擬隊列)

    【數(shù)據(jù)結(jié)構(gòu)】棧和隊列(鏈表模擬隊列)

    ? 學(xué)習(xí)本章節(jié)必須具備 單鏈表的前置知識, 建議提前學(xué)習(xí):點擊鏈接學(xué)習(xí):單鏈表各種功能函數(shù) 細(xì)節(jié) 詳解 本章節(jié)是學(xué)習(xí)用 單鏈表模擬隊列 1. 單鏈表實現(xiàn)隊列 思路如下 隊列:只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊列具有先 進(jìn)先出

    2024年04月27日
    瀏覽(25)
  • 數(shù)據(jù)結(jié)構(gòu)棧和隊列

    數(shù)據(jù)結(jié)構(gòu)棧和隊列

    3.1棧和隊列的定義和特點 棧和隊列是兩種常用的、重要的數(shù)據(jù)結(jié)構(gòu) 棧和隊列是限定插入和刪除只能在表的 “ 端點 ”進(jìn)行的 線性表 棧和隊列是線性表的子集(是插入和刪除位置受限的線性表) 棧的應(yīng)用: ? 由于棧的操作具有 后進(jìn)先出 的固有特性,使得棧成為程序設(shè)計中

    2024年02月16日
    瀏覽(19)
  • 考研數(shù)據(jù)結(jié)構(gòu)--棧和隊列

    考研數(shù)據(jù)結(jié)構(gòu)--棧和隊列

    內(nèi)容 棧 :棧的抽象數(shù)據(jù)類型定義、棧的存儲表示及基本操作實現(xiàn)、棧的應(yīng)用 棧的定義(特點) 棧是一種后進(jìn)先出(LIFO)的線性表,只能在一端進(jìn)行插入和刪除操作,這一端稱為棧頂,另一端稱為棧底。 打個比方: 有一個胡同很窄只能通過一輛車,而且是死胡同,只能從胡

    2023年04月19日
    瀏覽(27)
  • 數(shù)據(jù)結(jié)構(gòu)3:棧和隊列

    數(shù)據(jù)結(jié)構(gòu)3:棧和隊列

    目錄 1.棧 1.1棧的概念及結(jié)構(gòu) ?1.2棧的實現(xiàn) 2.隊列 2.1隊列的概念及結(jié)構(gòu) ?2.2隊列的實現(xiàn) 2.3循環(huán)隊列 ?3.棧和隊列的面試題 4.概念選擇題 棧:一種特殊的線性表,其只允許在固定的一端進(jìn)行插入和刪除元素操作。 進(jìn)行數(shù)據(jù)插入和刪除的一端稱為棧頂,另一端稱為棧底。 棧中數(shù)

    2023年04月27日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包