#include <stdio.h>#define NUMBER 100int push(int* a, int top, int data)
{a[++top] = data;return top;
}int pop(int* a, int top)
{if (top == -1) {return -1;}printf("%d\n",a[top]);top--;return top;
}int main()
{int a[NUMBER];int top = -1;top = push(a, top, 1);top = push(a, top, 3);top = push(a, top, 5);top = pop(a, top);top = pop(a, top);top = pop(a, top);return0;
} 原文:https://www.cnblogs.com/zgen...
单循环链表和单链表的唯一区别在于单循环链表的最后一个节点的指针域指向第一个节点,使得整个链表形成一个环.C实现代码如下:#include<stdio.h>typedef struct node
{int data;struct node *next;
}Node;//链表的初始化
Node* InitList(int number)
{int i;Node *pHead=(Node *)malloc(sizeof(Node));Node *TempHead=pHead;Node *Head=pHead;int data;for(i=0;i<number;i++){pHead=(Node *)malloc(sizeof(Node));printf("Please inp...
这篇文章主要为大家详细介绍了C语言利用结构体数组实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下要求:某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入)。定义结构体类型描述学生信息,每个学生信息包括:学号、姓名、多门课的成绩、总成绩和平均成绩。用结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统。...
利用C语言实现动态顺序表1. 数据类型及动态分配顺序存储结构#define INIT_SIZE 10 //当前默认有效值#define DEFAULT_INC 10 //动态分配默认增长个数typedef int DataType;typedef struct SeqList{ DataType* data; //指向空间的指针 int size; //当前有效的个数 int capacity; ...
跟线性数组和链表不同,HashTable是快速查找的数据结构。本文中的HashTable使用链表处理数组。该HashTable可以指定table的长度,提供了遍历的方法。包括table的长度的选择也比较讲究。 cp_int32 nPrime[MAX_HASH_PRIME_ARRAY_NUM] = {17, 37, 79, 163, 331, 673, 1361 };就是说table的长度来取自上面这个数组。比如用户设定了200,那么table的长度就是331,找到第一次比输入值大的数值。可以注意到上面的都是素数。
下面...
所谓共享栈是两个栈在一个顺序的存储空间中。两个栈的栈底分别是存储空间的首尾地址。如图我们可以将两个栈构造成一个:如图:从这里也就可以分析出来,栈1为空时,就是top1等于-1时;而当top2等于n时,即是栈2为空时,那么什么时候栈满呢? 想想极端的情况,若栈2是空栈,栈1的top1等于n-1时,就是栈1满了。反之,当栈1为空栈时,top2等于0时,为栈2满。但更多的情况,其实就是刚才说的,两个栈见面之时,也就是两个指针之间相...
随机数,也就是在不同的时刻产生不同的数值。在UNIX操作系统和window的操作系统上,我们知道有一个函数rand,它就是用来产生随机数的函数API接口,那么它的原理如何实现?如果约定a1=f(seed),an+1=f(an),那么可以得到一个序列a1,a2,a3..an,那么要制作一个伪随机函数rand,只需要让它每调用一次就返回序列的下一个元素就行。其实就是相当于第1次调用rand返回a1,第2次返回a2,…,第n次返回an,这样每次返回的数值都不一样,也就是...
#include <stdio.h>
#include <stdlib.h>void f(int n);int main(void)
{f(10);return0;
}void f(int n)
{if(n==1){printf("1\n");return;}if(n==2){printf("1 1\n");return;}printf("1 1 ");int* p=(int*)malloc(sizeof(int)*n);p[0]=1;p[1]=1;int i;for(i=2; i<n; i++){p[i]=p[i-1]+p[i-2];printf("%d ", p[i]);}printf("\n");free(p);p=NULL;
} 原文:http://www.cnblogs.com/forever-youthful-forever-weeping/p/7295321.html
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <unistd.h>
/*DIR *opendir(const char *pathname),即打开文件目录,返回的就是指向DIR结构体的指针struct __dirstream { void *__fd; char *__data; 实施int __entry_data; char *__ptr; int __entry_ptr; size_t __allocation; size_t __size; __libc_lock_d...
今天突然兴起,看来一下C语言的文件操作,以前在学习的时候,总是一带而过,觉得没有什么用处;但是现在看来,还真的没有什么用处,最后,我现在还有用到,当然这只是我的个人认为,并不能说明什么,在此我将自己写的一段代码附上,希望能和大家一同学习1、打开一个文本文件1 FILE *fopen( constchar * filename, constchar * mode );1linux文件路径:
2 linux:fopen("/tmp/test.txt", "w+");
34windows文件路径:
5 windows:fope...
题目:打印闰年要求:打印1000年到2000年之间的闰年思路:满足闰年的条件、1.可以被4整除但不能被100整除2.可以被400整除满足这两个条件之一的都可以代码实现int main(){int count = 0;//解法一int year = 1000;for (year = 1000; year <= 2000; year++){if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){printf("%d ", year);count++;}}printf("\n总共有%d年\n", count);return 0;
}运行结果
![](https://s4.51cto....
方案一、显示上移位,实际不发生移位。。#include<stdio.h>#include<math.h>void main(){ int a[10],i,*p,n; n=4; srand(time()); printf("数组:"); for(i=0;i<10;i++){ a[i]=rand()%100; printf("%-4d",a[i]); } printf("\n"); p=&a[n]; printf("现在的素组"); for(i=n;i<10;i++){ printf("%-4d",*p++); } for(i=0;i<n;i++){ printf("%-4d",a[i]); } print...
模拟实现内存比较函数memcmp: 该函数与strcmp有相似之处,都可用于字符串比较是否相同,若相同,则返回0值。若前者大于后者,则返回大于0的整型值,否则返回小于0的整型值。 区别在于: strcmp只能比较字符串,memcmp是内存比较函数,原则上是比较内存的,但其实真正实现时并不是所有都可以比较,例如float,但我们至少可以比较字符串以及int型。而对于strcmp,strncmp的比较:str1, str2 为需要比较的两个字符串,n为要...
利用迭代算法解决问题,需要做好以下三个方面的工作:
一、确定迭代变量
在可以用迭代算法解决的问题中,我们可以确定至少存在一个可直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程进行控制
在什么时候结束迭代过程?这...
1.链队列结构typedef struct QNode /* 结点结构 */
{QElemType data;struct QNode *next;
}QNode,*QueuePtr;typedef struct /* 队列的链表结构 */
{QueuePtr front,rear; /* 队头、队尾指针 */
}LinkQueue;
2. 构造一个空队列Q Status InitQueue(LinkQueue *Q)
{ Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));if(!Q->front)exit(OVERFLOW);Q->front->next=NULL;return OK;
}
3.销毁队列QStatus DestroyQueue(LinkQueue *Q...