链表,折磨人的数据结构

原创 2016年03月22日 22:28:30

链表,折磨人的数据结构

       要有一周的时间没更博了,这段时间我暂停了计蒜课的刷题,是因为我把《征服c指针》看完了。当然这本肯定不会只读一遍,我感觉按我目前的知识水平,应该之吸收了20%不到。所以我准备在学一点数据结构再去看一遍。

           学校开设的数据结构课开始疯狂的折磨人了。我每次翻开学校的教材,看着上面乱糟糟的排版,真的有一种想撕碎它的冲动。今天特别不在状态,在上完上机课后我就感觉特别累,莫名其妙的累。当然可能是上午上了两节高数后又上了三节数据结构的原因。今天上机给的实验题目就是链表的建立插入与删除,今天写的代码是我写过的链表代码最成功的一次,一次性编译通过,没有任何bug微笑,这个feel太爽!下面给出代码:

#include<stdio.h>
#include<stdlib.h>

typedef struct Node
{
    int data;
    struct Node *next;
}Node;

void creatnode(Node *head)
{
    Node *temp,*p;
    p=head;
    int n;
    scanf("%d",&n);
    while(n!=-1)
    {
        temp=malloc(sizeof(Node));
        if(temp==NULL)
        {
            printf("No enough memory");
            exit(0);
        }
        temp->data=n;
        temp->next=NULL;
        p->next=temp;
        p=temp;
        scanf("%d",&n);
    }
}
void Print(Node *head)
{
    Node *p;
    p=head->next;
    while(p!=NULL)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
}
void Insertnode(Node *head)
{
    printf("Now insert the data:");
    int e;
    scanf("%d",&e);
    Node *p,*pre,*temp;

    temp=malloc(sizeof(Node));
    temp->data=e;
    temp->next=NULL;

    pre=head;
    p=pre->next;//1 2 3 5
    while(p!=NULL)
    {
        if(e<=p->data)
        {
            pre->next=temp;
            temp->next=p;
            break;
        }
        pre=p;
        p=p->next;
    }
    if(p==NULL)
    {
        pre->next=temp;
    }

}
void Deletenode(Node *head)
{
    Node *p,*pre;
    pre=head;
    p=pre->next;
    printf("Now delete the data:");
    int n;
    scanf("%d",&n);
    while(p!=NULL)
    {
        if(p->data==n)
        {
            pre->next=p->next;
            free(p);
            break;
        }
        pre=p;
        p=p->next;
    }
    if(p==NULL)
        printf("No found\n");
}
void   FREE(Node *head)
{
    Node *pre=head;
    while(head!=NULL)
    {
        pre=head;
        head=head->next;
        free(pre);
    }
}

int main()
{
    Node *head;
    head=malloc(sizeof(Node));
    creatnode(head);
    printf("Before insert:");
    Print(head);
    Insertnode(head);
    printf("After insert:");
    Print(head);
    Deletenode(head);
    printf("After delete:");
    Print(head);
    FREE(head);
    return 0;
}
        太累了,也许是因为写了太多遍就没有写注释。这是最简单的单向链表。今天数据结构课还介绍了,对就仅仅只是介绍了双向链表,循环链表,静态链表。看着这些伪代码,我真的没有把他们翻译成c语言的冲动,哎!

        我也不知道为什么今天这么累,有可能是数据结构课上接触到的目前对我来说对我来说高难度数据结构让我感觉亚历山大,因为我一直自学在前面,一直以来上课教的东西对我来说是很轻松的,但数据结构教的东西让我很有压力,感觉心里失衡吧。

       总是说今天很累很累,但是今天也有高兴的事,我以绩点第一拿到了班级奖学金,和综测第六拿到了优秀学生奖学金二等奖。话说中学一直在名校读,从来都还没有拿到过奖学金呢。

       我感觉我还是太心急了,太迫切的想完全掌握c语言,导致我对出现的让我暂时不能明白的知识有点压力。以后要调整这种心态,不能太急功近利。

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

链表的理解与实现[数据结构]

一、链表的定义n个节点离散分配,节点之间通过指针相连。除了首节点和尾节点之外,每个节点都只有一个前驱结点和一个后继节点。 如下图: 大家有没有发现,链表的结构很像一种交通工具,什么呢? 火车...
  • u011509781
  • u011509781
  • 2016年01月27日 14:02
  • 1968

数据结构之:链表详解

11
  • lishuzhai
  • lishuzhai
  • 2016年03月31日 17:13
  • 13340

数据结构之单链表(C++实现)

很早前就想用C++来实现那些常用的数据结构。 今天就算是个开端把。还是那句话,看的再多不如自己动手写一遍。 按照自己的思路写。首先你得熟悉那种结构的特点,然后才能谈实现。  链表是一种很常用的数...
  • complety
  • complety
  • 2012年04月08日 15:25
  • 7504

【数据结构】链表的原理及与其相关的常见面试题总结

链表是一种数据结构,和数组同级。比如,Java中我们使用的ArrayList,其实现原理是数组。而LinkedList的实现原理就是链表了。链表在进行循环遍历时效率不高,但是插入和删除时优势明显。下面...
  • jianyuerensheng
  • jianyuerensheng
  • 2016年06月06日 09:49
  • 1353

数据结构概述<2>链表的基本概念

链表概述
  • bing_bing304
  • bing_bing304
  • 2014年12月02日 21:42
  • 816

数据结构之链表基本操作总结

数组与链表的区别  数组(顺序存储)和链表(链式存储)是两种不同的数据存储方式。 数组是一组具有相同类型和名称的变量的集合,这些变量称为数组的元素,每个数组元素都有一个编号,这个编号称...
  • Lily_whl
  • Lily_whl
  • 2017年05月11日 18:22
  • 1317

【数据结构】 链表的19种基本操作(完整版)

基于这篇文章: http://www.cnblogs.com/lifuqing/archive/2011/08/20/List.html 作者最后只给出了前面12中操作的代码,这里我帮他补全 链表...
  • fanxingzju
  • fanxingzju
  • 2014年04月03日 17:11
  • 1502

数据结构:链表(linked-list)

链表分为单向链表(Singly linked lis)、双向链表(Doubly linked list)、循环链表(Circular Linked list)。...
  • juanqinyang
  • juanqinyang
  • 2016年05月09日 11:09
  • 3282

链表相关的算法题大汇总 — 数据结构之链表奇思妙想

声明:转自http://hi.baidu.com/lanxuezaipiao/item/afc616caf8393a155050585b 基本函数 1,构造节点:  //定义节点类型 struct...
  • lanxuezaipiao
  • lanxuezaipiao
  • 2014年03月25日 21:18
  • 2814

数据结构——表与链表

本节我们讨论常见常用的数据结构——表。 如果要通俗简单的说什么是表,那我们可以这样说:按顺序排好的元素集合就是表。 很显然,除了第一个元素,表中的其他元素都有排在自己前面的那个元素,我们称其为前驱...
  • patient_pxw
  • patient_pxw
  • 2016年09月26日 12:48
  • 1804
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:链表,折磨人的数据结构
举报原因:
原因补充:

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