线性表和获取本地时间

顺序表的定义:如果有前驱只有一个前驱,如果有后继就只有一个后继线性表的结构体第一种是把数据存储在栈区:typedef struct Sequence
{
int data[SIZE];
int len;
}Seq;
第二种是把数据存储在堆区typedef struct Sequence
{
int *data;
int len;
}Seq;
建议大家用第二种定义的方法线性表的初始化int SequenceInit(Seq * s)
{
if(s==NULL) //指针一般都需要判空
{
return FAILURE;
}

s->data=(int *)malloc(sizeof(int)*SIZE);//在堆区申请空间
if(s==NULL)
{
	return FAILURE;
}

s->len=0;                  //将线性表的长度清空
return SUCCESS;

}
线性表的插入int SequenceInsert(Seq *l,int p,int num)//在p的位置插入值num
{
int i;

if(l==NULL)//有指针所以要判空
{
	return FAILURE;
}
if(l->data==NULL)//线性表是否申请过空间
{
	return FAILURE;
}

if(p>l->len+1)//插入位置判断
{
	return FAILURE;
}		

if(l->len>=SIZE)//插入位置判断
{
	return FAILURE;
}


for(i=0;i<l->len-p+1;i++)
{
	l->data[l->len-i]=l->data[l->len-i-1];
}
l->data[p-1]=num;
l->len++;
return SUCCESS;

}
遍历顺序表void SequenceTraverse(Seq l)
{

int i;
for(i=0;i<l.len;i++)
{

	printf("%d ",l.data[i]);
}
printf("\n");

}
返回线性表第p个位置的数据void SequenceFind(Seq l,int q,int *num)
{

if(q<=0 || q>l.len)
{
	return FAILURE;
}

if(num==NULL)
{
	return FAILURE;
}

*num=l.data[q-1];

}
函数指针的用法将函数名当实参传递形参使用函数指针int equal(int x,int y)//定义一个函数,如果x=y则返回1
{
return x==y? 1:0;
}

ret=SequenceLocate(seq,q,equal);//把函数名当作参数直接传递

int SequenceLocate(Seq l,int p,int (*p1)(int ,int ))
{
for(int i=0;i<l.len;i++)
{
if(p1(p,l.data[i]))
{
return i+1;
}
}

return FAILURE;

}
形参用int (*p1)(int ,int )来接函数名获得线性表指定值的前驱int GetPrior(Seq l,int q)
{
int i;
for(i=1;i<l.len;i++)
{
if(q==l.data[i])
{
return l.data[i-1];
}
}

return FAILURE;

}
获得线性表指定值的后继int GetBehind(Seq l,int q)
{
int i;
for(i=0;i<l.len-1;i++)
{
if(q==l.data[i])
{
return l.data[i+1];
}
}
return FAILURE;

}
删除线性表中的一个值int SequenceDel(Seq *l,int q)
{
int num;
int i;
if(l==NULL)//有指针所以先判空
{
return FAILURE;
}

if(q>l->len || q<1)//判断p是否有效
{
	return FAILURE;
}
num=l->data[q-1];
for(i=0;i<l->len-q;i++)//后一个覆盖掉前一个
{
	l->data[q-1+i]=l->data[q+i];
}
l->len--;将长度减一
return num;

}

将线性表清空int sequenceCleer(Seq *l)
{
if(lNULL)
{
return FAILURE;
}
else
l->len=0;//只需要将长度变成0
return SUCCESS;
}
将线性表销毁int sequenceDestory(Seq *l)
{
if(l
NULL)
{
return FAILURE;
}

l->len=0;
free(l->data);
l->data=NULL;

return SUCCESS;

}

显示当前时间time时间的使用其值表示从UTC(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数。然后调用localtime函数将time_t所表示的UTC时间转换为本地时间(我们是+8区,比UTC多8个小时)并转成struct tm类型,该类型的各数据成员分别表示年月日时分秒。2.localtime是 把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为本地时间,而gmtime函数转换后的时间没有经过时区变换,是UTC时间3. timeinfo把timeptr指向的tm结构体中储存的时间转换为字符串,返回的字符串格式为:Www Mmm dd hh:mm:ss yyyy。其中Www为星期;Mmm为月份;dd为日;hh为时;mm为分;ss为秒;yyyy为年份#include<stdio.h>
#include<time.h>

int main()
{
time_t rawtime;
struct tm *timeinfo;
time(&rawtime);
timeinfo=localtime(&rawtime);
printf(“time is %s\n”,asctime(timeinfo));
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值