练习使用链表数据结构解决一件小问题

原创 2016年08月29日 22:05:01

周末任务:

今天脑瓜一抽 突然想做链表的练习题:





#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <assert.h>
typedef struct node_tmp
{
    int data;
    struct node_tmp* next;    
}node;
//创建单链表
node* create(int n)
{
    assert(n>0);
    node* head;
    head = (node*)malloc(sizeof(node));
    head->next = NULL;
    printf("请输入head节点的值(int型):\n");
    scanf("%d",&head->data);
    if(1==n)
    {
        return head;
    }
    node* p = head;
    for(int i = 2;i <= n;i++)
    {
        node* tmp = (node*)malloc(sizeof(node));
        tmp->next = NULL;
        printf("请输入第%d个节点的值(int型):\n",i);
        scanf("%d",&tmp->data);
        p->next = tmp;
        p = tmp;
    }
    return head;
}

//问题1:链表逆置
//head指针不断后移,指针反向即可

node* reverse(node* head)
{
    if(head != NULL && head->next != NULL)
    {
        node* p = head;
        node* q = head->next;
        p->next = NULL;
        while(q->next != NULL)
        {
            head = q->next;
            q->next = p;
            p = q;
            q = head;
        }
        head->next = p;
    }
    return head;
}


void nodePrint(node* head)
{
    int i = 1;
    node* p = head;
    while(p != NULL)
    {
    printf("node%d->%d\n",i++,p->data);
    p = p->next;
    }
    return;
}


void main()
{
node* head;
head = create(3);
nodePrint(head);
printf("------------------\n");
head = reverse(head);
nodePrint(head);
free(head);
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

数据结构(三):循环单链表解决约瑟夫问题

#include using namespace std; //小孩结点类型 struct Child{ int no; //小孩编号 Child* next; //指针域,...

实战数据结构(4)_循环单链表解决约瑟夫问题

/************************************************************************/ /* author: lynnbest 2013...

数据结构之链表——环相关问题及解决思路汇总

链表是一种常见的数据结构,无论是实际应用还是面试中,出现的频率都比较高,链表适宜存储关系不固定的数据,属于动态存储,区别于数组结构的静态存储。本篇小博主要围绕三个常见的链表问题进行分析。 一、建立一...

数据结构—Java版链表相交问题的终极解决方案

【题目】 判断两个链表(链表可以有环,可以无环)是否相交,若相交,则返回相交节点,不相交则返回null 1.判断两个链表是否相交 【思路】 两个链表分三种情况: ①两个链表均为非环链表;...

1748:约瑟夫问题(3.2数据结构之指针和链表)

1748:约瑟夫问题总时间限制: 1000ms 内存限制: 65536kB 描述 约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外...

数据结构与算法(单循环链表_约瑟夫问题)

据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)