zoukankan      html  css  js  c++  java
  • 链表结点的交换

    题目:

    输入无序的元素,分别建立两个有3个结点的有序单链表(有头结点)(显示排序后的链表),交换两个单链表的第二个结点(注意不能采取直接赋值法的方式,要进行结点的移动),最后显示链表中的元素。

     1 #include <stdio.h>
     2 #define ElemType int
     3 
     4 //定义结构
     5 typedef struct Node
     6 {
     7     ElemType data;
     8     struct Node * next;
     9 }Node, *LinkList;
    10 
    11 //初始化
    12 void InitList(LinkList *L)
    13 {
    14     *L = (LinkList)malloc(sizeof(Node));
    15     (*L)->next = NULL;
    16 }
    17 
    18 //尾插法创建
    19 void CreatFromTail(Node *L)
    20 {
    21     Node *r, *s;
    22     ElemType c;
    23     int flag = 1;
    24     r = L;
    25     while(flag)
    26     {
    27         scanf("%d", &c);
    28         if(c != 0)
    29         {
    30             s = (LinkList)malloc(sizeof(Node));
    31             s->data = c;
    32             r->next = s;
    33             r = s;
    34         }
    35         else
    36         {
    37             flag = 0;
    38             r->next = NULL;
    39         }
    40     }
    41 }
    42 
    43 //打印链表
    44 void print(Node *L)
    45 {
    46     Node *t, *p = L;
    47     t = p->next;                //t是头结点
    48     while(t != NULL)
    49     {
    50         printf("%d ", t->data);
    51         t = t->next;
    52     }
    53 }
    54 
    55 //实现交换
    56 void swap(Node *L1, Node *L2)
    57 {    
    58     Node *p1 = L1, *p2 = L2;
    59 
    60     p1 = L1->next->next;
    61     p2 = L2->next->next;
    62 
    63     
    64     L1->next->next = p2;   //L1->next 指向第一个节点, L1->next->next 指向第二个节点
    65     L2->next->next = p1;
    66 
    67     p1 = L1->next->next->next;
    68     p2 = L2->next->next->next;
    69 
    70     L1->next->next->next = p2;   //L1->next 指向第一个节点, L1->next->next 指向第二个节点,  L1->next->next->next 指向第三个节点
    71     L2->next->next->next = p1;
    72 
    73     
    74 }
    75 //
    76 int main(int argc, char const *argv[])
    77 {
    78     Node *p1 = NULL;
    79     Node *p2 = NULL;
    80     InitList(&p1);
    81     InitList(&p2);
    82     CreatFromTail(p1);
    83     CreatFromTail(p2);
    84    // print(p1);
    85 //    print(p2);
    86     swap(p1, p2);
    87     print(p1);
    88     print(p2);
    89     return 0;
    90 }
  • 相关阅读:
    django4-模板进阶
    django3-视图函数进阶
    django1-web开发基础知识
    django2-登录与出版社
    django3-路由系统进阶
    web前端-bootstrap
    Java发送邮件--web.xml配置,Java代码配置
    yii框架美化访问路径,去掉index.php/?r=部分
    JAVA集合框架的特点及实现原理简介
    详解:Java字符串类型"switch"的底层原理
  • 原文地址:https://www.cnblogs.com/hello-lijj/p/7768341.html
Copyright © 2011-2022 走看看