【数据结构之C语言模拟整数数组实现】教程文章相关的互联网学习教程文章

C语言之数据结构——栈(C语言)【代码】

C语言之数据结构——栈栈: 定义:限定只在表尾进行插入或删除操作的线性表,表尾指栈顶,表头指栈底。特点:栈只能是先进后出。类别:线性栈和链栈。/*数据结构栈: 1、特点:先进后出。 2、基本操作 InitStack(&S) 操作结果:初始化一个栈 Push(&S) 操作结果:进行压栈,输入元素 Pop(&S) 操作结果:删除栈的栈顶元素 定义一个栈: typedef struct node{...

c语言数据结构之 堆排序【图】

算法:先生成随机数,赋值到数组,将数组第一个元素a[0]设置为哨兵,函数调用数组和随机数个数n,再设定n/2的根结点与孩子结点进行比较操作,若右孩子存在,则选出三个数里最小的数赋值给根节点,如果右孩子不存在,则只需比较左孩子与根节点大小,一直循环操作至a[1],再从a[2]开始进行根结点与孩子结点进行比较操作,一直到n/2为止,最后,依次输出a[1],输出后将a[n]赋值给a[1];再进行递归操作,重复以上步骤,直至数组为空要点...

数据结构C语言实现----循环队列【代码】【图】

代码如下:#include<stdio.h> #include<stdlib.h>typedef char ElemType; #define MAXQUEUE 100typedef struct {ElemType *base;int front;int rear; }cycleQueue;///////////////////////////////// //创建一个循环队列 void initqueue(cycleQueue *q) {q->base = (ElemType*)malloc(sizeof(cycleQueue) * MAXQUEUE);//为循环队列申请连续空间if (!q->base){exit(0);}q->front = q->rear = 0;//初始换队首队尾位置为0 }//////////...

数据结构--单链表 C语言【代码】【图】

//单链表基本操作 1 #include <stdio.h>2 3 #include <stdlib.h>4 5 6 typedef struct _NODE7{8int data;9struct _NODE *pNext;10 }NODE,*PNODE;11 12 PNODE Create_List(void)13{14int len = 0;15int data,i = 0;16 PNODE pHead = NULL;17 pHead = (PNODE)malloc(sizeof(NODE));18 PNODE pTail = pHead;19 pTail->pNext = NULL;20 21if(pHead == NULL)22 {23 printf("内存分配失败!\r\n");24 }...

数据结构线性表链表的C语言实现【图】

数据结构线性表链表的C语言实现 说明:线性表是一种最简单的线性结构,也是最基本的一种线性结构,所以它不仅是学习中的重点,也是应用开发非常常用的一种数据结构。它可以分为顺序表和链表。它的主要操作是数据元素的插入,删除,以及排序等。接下来,本篇文章将对线性表链表的基本操作和运用进行详细的说明(包含在源代码的注释中),并给予可运行的程序源代码。 线性表链表不同于顺序表,它是一种链式的线性表,和顺序表...

数据结构之---C语言实现共享栈【图】

所谓共享栈是两个栈在一个顺序的存储空间中。两个栈的栈底分别是存储空间的首尾地址。如图我们可以将两个栈构造成一个:如图:从这里也就可以分析出来,栈1为空时,就是top1等于-1时;而当top2等于n时,即是栈2为空时,那么什么时候栈满呢? 想想极端的情况,若栈2是空栈,栈1的top1等于n-1时,就是栈1满了。反之,当栈1为空栈时,top2等于0时,为栈2满。但更多的情况,其实就是刚才说的,两个栈见面之时,也就是两个指针之间相...

天勤考研数据结构笔记--栈的C语言实现【代码】

1、栈的基本概念栈的定义:栈是一种只能在一端进行插入或删除操作的线性表。其中允许进行插入或删除的一端称为栈顶(top)。栈顶是由一个称为栈顶指针的位置指示器(其实就是一个变量,对于顺序栈,就是数组索引,对于链式栈,就是节点地址的指针)来指示。栈的插入和删除操作一般称为入栈和出栈。栈的特点:先进后出(FILO)。2、栈的本质栈依照存储结构可分为顺序栈和链式栈。由栈的定义可知,栈是一种在操作上稍加限制的线性表,...

数据结构--快速、冒泡、选择排序C语言实现

#include<stdio.h> //快速排序 void quickSort(int a[],int left,int right) {int i,j,temp;i = left;j = right;temp = a[left];if(left>right)return;while(i!=j){while(a[j]>=temp &&j>i)j--;if(j>i)a[i++] = a[j];while(a[i]<=temp&&j>i)i++;if(j>i)a[j--] = a[i];}a[i] = temp;quickSort(a,left,i-1);quickSort(a,i+1,right); } //冒泡排序 void bubbleSort(int a[],int len) {int i,j,temp;for(i = 0;i<len;i++){ for(j = 0...

约瑟夫环(N个人围桌,C语言,数据结构)【图】

约瑟夫环问题(C语言、数据结构版)一、问题描述N个人围城一桌(首位相连),约定从1报数,报到数为k的人出局,然后下一位又从1开始报,以此类推。最后留下的人获胜。(有很多类似问题,如猴子选代王等等,解法都一样)二、思路分析    (1)可将人的顺序简单编号,从1到N;    (2)构造一个循环链表,可以解决首位相连的问题,同时如果将人的编号改为人名或者其他比较方便 (3)将人的编号插入到结构体的Data域;...

【C语言数据结构】静态单链表【代码】

StaticLinkLinst.h#ifndef STATIC_LINKLIST_H #define STATIC_LINKLIST_Htypedef void StaticLinkListNode; //静态单链表节点 typedef void StaticLinkList; //静态单链表/* * 创建静态单链表 * @param capacity 静态单链表的最大容量 * @return 返回静态单链表的指针 */ StaticLinkList* StaticLinkList_Create(int capacity);/* * 销毁静态单链表 * @param list 静态单链表的指针 */ void StaticLinkList_Destr...

深入浅出数据结构C语言版(8)——后缀表达式、栈与四则运算计算器【代码】【图】

在深入浅出数据结构(7)的末尾,我们提到了栈可以用于实现计算器,并且我们给出了存储表达式的数据结构(结构体及该结构体组成的数组),如下://SIZE用于多个场合,如栈的大小、表达式数组的大小#define SIZE 1000//表达式的单个元素所使用的结构体 typedef struct elem {int num = 0; //若元素存储操作数则num为该操作数char oper = ‘=‘; //若元素存储操作符则oper为该操作符bool IsNum = false; //用于判断元素是否为操作...

数据结构之C语言模拟整数数组实现【代码】

#include <stdio.h> #include <malloc.h> #include <stdlib.h>typedef struct Arr {int *pBase; //数组第一个元素地址int len; //数组长度int cnt; //当前有效元素数量} Array;void init_array(Array *, int); //初始化数组void show_array(Array *); //遍历打印数组bool is_empty(Array *); //判断数组是否空bool insert_array(Array *, int pos, int); //插入元素 pos表示在第几个元素前面插入bool append_array(Array *...

C语言数据结构入门记——二叉排序树的建立【代码】【图】

中序遍历二叉排序树输入一整数序列,建立二叉排序树,然后中序遍历。输入第一行为整数的个数n,第二行是具体的n个整数。建立二叉排序树,然后输出中序遍历的结果。输入示例:5 1 6 5 9 8输出:1 5 6 8 9 #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct stu{int data;struct stu *lc,*rc; }bitree; bitree *creat(int n){int ch;bitree *q[100];//设置指针型数组构建队列 int front,rear;int num=0,i;b...

C语言数据结构-线性链表LinkList【代码】

1. 头结点表示链表中第一个结点的存储位置2. 最后一个结点的存储位置为空(NULL);#ifndef __LINKLLIST_H__ #define __LINKLLIST_H__#define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLF -1 #define OVERFLOW -2#define LIST_INIT_SIZE 100 #define LISTINCREMENT 10typedef int Status;typedef int ElemType;typedef struct LNode{ElemType data;struct LNode *next; }LNode, *LinkList;#endif #inclu...

数据结构之---C语言实现广义表头尾链表存储表示

//广义表的头尾链表存储表示 //杨鑫 #include <stdio.h> #include <malloc.h> #include <stdlib.h> #include <string.h> #define MAXSTRLEN 40 ) typedef char SString[MAXSTRLEN+1]; typedef char AtomType; // 定义原子类型为字符型 typedef enum{ATOM, LIST // ATOM==0:原子 LIST==1:子表 } ElemTag; typedef struct GLNode {ElemTag tag; // 公共部...