zoukankan      html  css  js  c++  java
  • 用结构体指针存储数据__正序_逆序下的输入

    逆序输入

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <malloc.h>
     4 #define maxn 1000
     5 
     6 //邻接表(点很多,边较少)
     7 //共有n个点,点编号为1~n,m条边
     8 //无向图
     9 
    10 struct node
    11 {
    12     long value;
    13     struct node *next;
    14 }*d[maxn+1];
    15 
    16 int main()
    17 {
    18     struct node *p;
    19     long n,m,i,x,y;
    20     scanf("%ld%ld",&n,&m);
    21     //for (i=1;i<=n;i++)
    22     //    d[i]=NULL;
    23     //点在链表的顺序与输入的顺序相反
    24     for (i=1;i<=m;i++)
    25     {
    26         scanf("%ld%ld",&x,&y);
    27         //to point x
    28         ///新创一个内存空间,p指针指向这个内存空间(结构体)
    29         p=(struct node *) malloc (sizeof(struct node));
    30         p->value=y;
    31         ///p指向的结构体的内部结构体指针next指向d[x](之前的数据)
    32         p->next=d[x];
    33         ///当前数据在起始指针位置
    34         d[x]=p;
    35         //to point y
    36         //Don't forget initialization
    37         p=(struct node *) malloc (sizeof(struct node));
    38         p->value=x;
    39         p->next=d[y];
    40         d[y]=p;
    41     }
    42     for (i=1;i<=n;i++)
    43     {
    44         printf("Point %ld:",i);
    45         p=d[i];
    46         while (p)
    47         {
    48             printf(" %ld",p->value);
    49             p=p->next;
    50         }
    51         printf("
    ");
    52     }
    53     return 0;
    54 }
    55 /*
    56 Input:
    57 6 9
    58 1 2
    59 1 3
    60 1 4
    61 2 5
    62 3 4
    63 3 5
    64 3 6
    65 4 6
    66 5 6
    67 Output:
    68 Point 1: 4 3 2
    69 Point 2: 5 1
    70 Point 3: 6 5 4 1
    71 Point 4: 6 3 1
    72 Point 5: 6 3 2
    73 Point 6: 5 4 3
    74 */

    正序输入:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <malloc.h>
     4 #define maxn 1000
     5 
     6 //邻接表(点很多,边较少)
     7 //共有n个点,点编号为1~n,m条边
     8 //无向图
     9 
    10 struct node
    11 {
    12     long value;
    13     struct node *next;
    14 }*d[maxn+1],*e[maxn+1];
    15 
    16 int main()
    17 {
    18     struct node *p;
    19     long n,m,i,x,y;
    20     scanf("%ld%ld",&n,&m);
    21     for (i=1;i<=n;i++)
    22     {
    23         d[i]=(struct node *) malloc (sizeof(struct node));
    24         e[i]=d[i];
    25     }
    26 
    27     //点在链表的顺序与输入的顺序相反
    28     for (i=1;i<=m;i++)
    29     {
    30         scanf("%ld%ld",&x,&y);
    31         //to point x
    32         ///新创一个内存空间,p指针指向这个内存空间(结构体)
    33         p=(struct node *) malloc (sizeof(struct node));
    34         ///在记录与x相邻的结点的链表的末端加入数值,
    35             ///并且末端与一个新的结构体指针连接,使当前末端为一个结构体指针
    36         e[x]->value=y;
    37         e[x]->next=p;
    38         e[x]=p;
    39         //to point y
    40         //Don't forget initialization
    41         p=(struct node *) malloc (sizeof(struct node));
    42         e[y]->value=x;
    43         e[y]->next=p;
    44         e[y]=p;
    45     }
    46     for (i=1;i<=n;i++)
    47     {
    48         printf("Point %ld:",i);
    49         p=d[i];
    50         ///末端为一个结构体指针
    51         while (p!=e[i])
    52         {
    53             printf(" %ld",p->value);
    54             p=p->next;
    55         }
    56         printf("
    ");
    57     }
    58     return 0;
    59 }
    60 /*
    61 Input:
    62 6 9
    63 1 2
    64 1 3
    65 1 4
    66 2 5
    67 3 4
    68 3 5
    69 3 6
    70 4 6
    71 5 6
    72 Output:
    73 Point 1: 2 3 4
    74 Point 2: 1 5
    75 Point 3: 1 4 5 6
    76 Point 4: 1 3 6
    77 Point 5: 2 3 6
    78 Point 6: 3 4 5
    79 */
  • 相关阅读:
    vue axios创建实例
    vue axios全局配置
    vue axios并发请求
    vue axios HTTP 库
    vuex actions异步操作
    vuex getters
    Go并发控制--Channel篇
    UVA10228 A Star not a Tree?
    P1395 会议
    P1337 [JSOI2004]平衡点 / 吊打XXX
  • 原文地址:https://www.cnblogs.com/cmyg/p/6911045.html
Copyright © 2011-2022 走看看