逆排序:输入12345,输出54321

本文介绍了一种用于反转整数的算法实现,包括处理正数、负数和零的情况,并提供了两种不同的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入123456,输出654321,两个都是int类型;

输入的参数为num/out,int类型;

返回值为int类型。

第一种:(传入的值为正整数)【如果是负数或者为零呢?】

    out = 0
    while num:
        out = out * 10 + num % 10
        num /= 10
    
    return out

第二种(考虑了正负数、为零的情况):

   out = 0
    is_negative = False
    if num < 0:
        is_negative = True
    # is_negative = "negative" if num < 0 else "positive"

    num = abs(num)
    while num:
        out = out * 10 + num % 10
        num /= 10

    if is_negative:
        return -out
    else:
        return out

 最初的写法(不考虑任何情况):

def reserve_num(num):

    remainder = 0
    remainder = num %10
    while num>1:
        num /= 10
        if num > 0:
            remainder = remainder*10 + num %10

    return remainder

运行结果:

if __name__ == '__main__':
  
    print reserve_num(543211)  #输出112345

 

转载于:https://www.cnblogs.com/general-seven/p/5924403.html

以下是拓扑排序算法的C语言实现: ```c #include <stdio.h> #define MAXVEX 100 // 最大顶点数 typedef struct EdgeNode { // 边表节点 int adjvex; // 邻接点域,存储该顶点对应的下标 struct EdgeNode *next; // 链域,指向下一个邻接点 } EdgeNode; typedef struct VertexNode { // 顶点表结构 int in; // 顶点入度 int data; // 顶点域,存储顶点信息 EdgeNode *firstedge; // 边表头指针 } VertexNode, AdjList[MAXVEX]; typedef struct { // 图结构 AdjList adjList; int numVertexes, numEdges; // 图中当前顶点数和边数 } GraphAdjList; void CreateALGraph(GraphAdjList *G) { // 建立图的邻接表结构 int i, j, k; EdgeNode *e; printf("请输入顶点数和边数:\n"); scanf("%d%d", &G->numVertexes, &G->numEdges); for (i = 0; i < G->numVertexes; i++) { // 输入顶点信息,建立顶点表 printf("请输入第%d个顶点:", i + 1); scanf("%d", &G->adjList[i].data); G->adjList[i].in = 0; // 初始化所有顶点入度为0 G->adjList[i].firstedge = NULL; // 初始化所有边表为空 } for (k = 0; k < G->numEdges; k++) { // 建立边表 printf("请输入边(vi, vj)上的顶点序号:\n"); scanf("%d%d", &i, &j); e = (EdgeNode *)malloc(sizeof(EdgeNode)); e->adjvex = j; e->next = G->adjList[i].firstedge; G->adjList[i].firstedge = e; G->adjList[j].in++; // 对应顶点入度加1 } } void TopologicalSort(GraphAdjList G) { // 拓扑排序 int i, j, k, top = 0; int *stack; // 存储入度为0的顶点 EdgeNode *e; stack = (int *)malloc(G.numVertexes * sizeof(int)); for (i = 0; i < G.numVertexes; i++) { // 将所有入度为0的顶点入栈 if (G.adjList[i].in == 0) { stack[++top] = i; } } while (top != 0) { // 栈不为空 j = stack[top--]; // 出栈一个顶点 printf("%d ", G.adjList[j].data); // 输出该顶点 for (e = G.adjList[j].firstedge; e; e = e->next) { // 将该顶点的所有邻接点入度减1 k = e->adjvex; if (--G.adjList[k].in == 0) { // 若邻接点入度为0,则入栈 stack[++top] = k; } } } } int main() { GraphAdjList G; CreateALGraph(&G); printf("拓扑排序结果为:"); TopologicalSort(G); printf("\n"); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值