若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

2208: 交换节点(线性表)

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 2,085

题目描述

(线性表)编写一个算法来交换单链表中指针P所指结点与其后继结点,HEAD是该链表的头指针,P指向该链表中某一结点。

输入

输入链表长度:6
输入链表:1 2 3 4 5 6
输入p指向的节点:5

输出

1 2 3 4 6 5

样例输入

5
7 6 9 8 2
3

样例输出

7 6 8 9 2 

参考代码

#include"stdio.h"
#include"stdlib.h"
struct node 
{
    int data;
    struct node *next;
}
node;
struct node* create(int n) 
{
    struct node *head,*p1,*p2;
    int i;
    for (i=1;i<=n;i++) 
    {
        p1=(struct node*)malloc(sizeof(struct node));
        scanf("%d",&p1->data);
        if(i==1)
                    head=p1; else
                    p2->next=p1;
        p2=p1;
    }
    p1->next=0;
    return head;
}
void fun(struct node *head,int n) 
{
    struct node *p,*q1=head,*q2=0;
    int t=1;
    while(t!=n) 
    {
        t++;
        q2=q1;
        q1=q1->next;
    }
    if(n==1) 
    {
        head=head->next;
        q1->next=head->next;
        head->next=q1;
    } else 
    {
        p=q1->next;
        q2->next=p;
        q1->next=p->next;
        p->next=q1;
    }
    printf("%d",head->data);
    head=head->next;
    while(head!=0) 
    {
        printf(" %d",head->data);
        head=head->next;
    }
}
int main() 
{
    int n;
    struct node *head;
    scanf("%d",&n);
    head=create(n);
    scanf("%d",&n);
    fun(head,n);
    return 0;
}

解析

暂无

hustoj

发表评论 取消回复

要发表评论,您必须先登录。


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

原站点 Skip Dreams孤独患者
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist