最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言中棧的兩種實(shí)現(xiàn)方法詳解

 更新時(shí)間:2021年08月20日 15:06:07   作者:__山頂洞人__  
棧只允許在一端進(jìn)行插入或刪除操作的線性表。首先棧是一種線性表,但是限定這種線性表只能在某一端進(jìn)行插入和刪除操作,這篇文章主要介紹了C語(yǔ)言對(duì)棧的實(shí)現(xiàn)基本操作

一、順序棧

#include<stdio.h>
#include<stdlib.h>
#define maxsize 64

//定義棧
typedef struct
{
	int data[maxsize];
	int top;
}sqstack,*sqslink;
//設(shè)置棧空
void Clearstack(sqslink s)
{
	s->top=-1;
}

//判斷棧空
int Emptystack(sqslink s)
{
	if (s->top<0)
		return 1;
	else
		return 0;
}
//進(jìn)棧
int Push(sqslink s, int x)
{
	if (s->top>=maxsize-1)
		return 0;
	else
	{
		s->top++;
		s->data[s->top]=x;
		return 1;
	}
}
// 出棧
int Popstack(sqslink s)
{
	int n;
	if (Emptystack(s)>0)
		return NULL;
	else
	{
		n=s->data[s->top];
		s->top--;
		return n;
	}
}
void main()
{
	sqslink s1;
	s1 =(sqslink)malloc(sizeof(sqstack));
	Clearstack(s1);
	printf("%d\n",s1->top);
	for(int i=0; i<=10;i++)
	{
		Push(s1, i);
		printf("%d is pushed into stack\n",i);
	}
	printf("top is point to %d\n",s1->top);
	printf("\n");
	int n;
	n = Popstack(s1);
	printf("number %d  is poped\n",n);
	printf("top is point to %d\n",s1->top);
}

二、鏈?zhǔn)綏?/h2>
#include<stdio.h>
#include<stdlib.h>

typedef struct node
{
	int data;
	struct node * next;
}snode,*slink;
struct Node
{
	slink i;
	slink n;
};

// 清空棧
void Clearstack(slink top)
{
	top=NULL;
}
//判斷棧是否為空
int Emptystack(slink top)
{
	if (top==NULL) return 1;
	else return 0;
}

// 進(jìn)棧
slink Push(slink top, int x)
{
	slink node = NULL;
	node = (slink)malloc(sizeof(snode));
	node->data = x;
	node->next = top;
	top = node;
	printf("*************************\n");
	printf("%d",top->data);
	printf("*************************\n");
	return top;
}
// 出棧
struct Node Pop(slink top)
{	
	slink node = NULL;
	struct Node result;
	if (Emptystack(top))
	{
	result.i=node;
	}
	else
	{
		int n;
		node = top;
		top = node->next;
		result.i = top;
		result.n = node;
		return result;
	}	
}

void main()
{
	slink top_ = NULL;
	for(int i =0; i<10;i++)
	{
		top_ = Push(top_, i);
		printf("%d is pushed in to the stack\n",i);
	}	
	int e;
	e = top_->data;
	printf("top is pointint to %d\n",e);
	printf("\n");
	printf("\n");
	printf("\n");
	slink node =NULL;
	printf("*************************\n");
	struct Node result = Pop(top_);
	if ((result.i)!=NULL)
	{
		top_ = result.i;
		node = result.n;

		e = top_->data;
		printf("top is pointint to %d\n",e);
		int e_node;
		e_node = node->data;
		printf("the node Poped 's data is pointint to %d\n",e_node);
		free(node);
	}
	else
	{
	printf("stack is empty");
	}
}

總結(jié)

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • C++多線程編程和同步機(jī)制實(shí)例演示

    C++多線程編程和同步機(jī)制實(shí)例演示

    C++中的多線程編程和同步機(jī)制使得程序員可以利用計(jì)算機(jī)的多核心來(lái)提高程序的運(yùn)行效率和性能,本文將介紹多線程編程和同步機(jī)制的基本概念和使用方法
    2023-09-09
  • 如何在程序中判斷VS的版本(實(shí)現(xiàn)方法詳解)

    如何在程序中判斷VS的版本(實(shí)現(xiàn)方法詳解)

    下面小編就為大家?guī)?lái)一篇如何在程序中判斷VS的版本(實(shí)現(xiàn)方法詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • C++ opencv霍夫圓檢測(cè)使用案例詳解

    C++ opencv霍夫圓檢測(cè)使用案例詳解

    這篇文章主要介紹了C++ opencv霍夫圓檢測(cè)使用案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 使用C++創(chuàng)建多個(gè)IPC機(jī)制的上層接口

    使用C++創(chuàng)建多個(gè)IPC機(jī)制的上層接口

    設(shè)計(jì)一個(gè)上層的IPC接口,這個(gè)接口將在未來(lái)封裝底層的通信機(jī)制,這樣的設(shè)計(jì)要求接口足夠抽象,以便于底層實(shí)現(xiàn)的細(xì)節(jié)對(duì)上層用戶透明,本文給大家介紹了如何使用C++創(chuàng)建多個(gè)IPC機(jī)制的上層接口,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Qt中圖片旋轉(zhuǎn)縮放操作的實(shí)現(xiàn)

    Qt中圖片旋轉(zhuǎn)縮放操作的實(shí)現(xiàn)

    本文主要介紹了Qt中圖片旋轉(zhuǎn)縮放操作的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • C語(yǔ)言超詳細(xì)講解棧的實(shí)現(xiàn)及代碼

    C語(yǔ)言超詳細(xì)講解棧的實(shí)現(xiàn)及代碼

    棧(stack)又名堆棧,它是一種運(yùn)算受限的線性表。限定僅在表尾進(jìn)行插入和刪除操作的線性表。這一端被稱為棧頂,相對(duì)地,把另一端稱為棧底。向一個(gè)棧插入新元素又稱作進(jìn)棧、入?;驂簵#前研略胤诺綏m斣氐纳厦?,使之成為新的棧頂元素
    2022-04-04
  • 基于C語(yǔ)言掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn)

    基于C語(yǔ)言掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn)

    大家好,本篇文章主要講的是基于C語(yǔ)言掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Qt實(shí)現(xiàn)簡(jiǎn)單UDP通信

    Qt實(shí)現(xiàn)簡(jiǎn)單UDP通信

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)簡(jiǎn)單UDP通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++設(shè)計(jì)模式之組合模式(Composite)

    C++設(shè)計(jì)模式之組合模式(Composite)

    這篇文章主要為大家詳細(xì)介紹了C++設(shè)計(jì)模式之組合模式Composite,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • C語(yǔ)言代碼鏈表實(shí)現(xiàn)貪吃蛇游戲

    C語(yǔ)言代碼鏈表實(shí)現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言鏈表實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01

最新評(píng)論

新乡县| 天门市| 新津县| 开远市| 赤城县| 和硕县| 丹棱县| 珠海市| 南通市| 基隆市| 紫云| 富川| 乐昌市| 临西县| 宽甸| 桑植县| 和平区| 乐昌市| 巢湖市| 肃宁县| 封开县| 武邑县| 子长县| 吴江市| 辉南县| 苍山县| 黎平县| 随州市| 江永县| 临夏县| 高台县| 碌曲县| 六枝特区| 怀宁县| SHOW| 山丹县| 昌都县| 通城县| 资溪县| 万宁市| 方城县|