搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 编程范 > 【编程经验】关于链表、还有编译器

【编程经验】关于链表、还有编译器

编程范 2018-04-03

点击蓝字

       最近有小白来问VC6.0和其他编译器怎么下,小编回了一些,但是也是确实比较多......所以今天就不单单分享知识了,还要分享资源!

         先分享一个我站“”大神的关于链表的一个笔记:

//链表的一些简单操作


#include <stdio.h>

#include <malloc.h>

struct List {

    int    data;    //数据

    struct List *next; //指向下一个结点

};

//建立n个结点的后进先出单向链表

struct List * createList(int n);

//链表的遍历

void showList(struct List * head);

//在链尾加一个结点

void insertList(struct List * head,int data);

//删除链的一个结点

int deleteList(struct List * head,int data);

//释放链表

void freeList(struct List * head);


int main(void)

{

    //建立链表

    struct List *head=createList(9);

    showList(head);           //遍历链表

    insertList(head,0);       //在链尾加一个结点

    deleteList(head,4);       //删除链的一个结点

    freeList(head);           //释放链表

    return 0;

}

//功    能:建立n个结点的后进先出单向链表

//入口参数:项数n

//返 回 值:指向链表哨兵结点的指针


struct List * createList(int n)

{

    struct List *head,*node;

    head=(struct List *)malloc(sizeof(struct List));

    //头结点(哨兵)的数据域为空!

    head->next=NULL;

    for (int i=0;i<n;i++) {

        node=(struct List *)malloc(sizeof(struct List));

        node->data=i+1;

        node->next=head->next;

        head->next=node;

    }

    return head;

}


//功    能:链表的遍历

//入口参数:head指向链表哨兵结点的指针

void showList(struct List * head)

{

    struct List *h;

    h=(struct List*)malloc(sizeof(struct List));

    h=head->next;

    while(h!=NULL){

        printf("%d ",h->data);

        h=h->next;    

    }

}


//功    能:在链尾加一个结点

//入口参数:head指向链表哨兵结点的指针

//          data待插入结点的数据值

void insertList(struct List * head,int data)

{

    struct List *p,*newNode;

    newNode=(struct List*)malloc(sizeof(struct List));

    newNode->data=data;

    for(p=head;p->next!=NULL;p=p->next);  // 链表遍历惯用    

        p->next=newNode;

    newNode->next=NULL; 

}

//功    能:删除链的一个结点

//入口参数:head指向链表哨兵结点的指针

//          data待删除结点的数据值

//返 回 值:1成功删除,0结点不存在

int deleteList(struct List * head,int data)

{

    struct List *pre,*p;

    for(p=head->next;p->data!=data&&p->next!=NULL;p=p->next)

        pre=p;

    if(p->data!=data)return 0;

    else{

        pre->next=p->next;

    }

    return 1;

}

//功    能:释放链表

//入口参数:head指向链表哨兵结点的指针

void freeList(struct List * head)

{

    struct List *temp;

    for(struct List *p=head;p!=NULL;p=temp){

        temp=p->next;

        free(p);

    }

}

(这位博主是一个潜力股!!后台回复此博主的名字,去撩他!!!)

然后答应你们的资源:(自行挑选)


点击“阅读原文”获取共享资源

(题外话:最近我们要加一些C语言讲解视频和MySQL数据库设计的内容,大家有什么建议没有,有的话欢迎在评论区留言)



版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《【编程经验】关于链表、还有编译器》的版权归原作者「编程范」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注编程范微信公众号

编程范微信公众号:dotcpp

编程范

手机扫描上方二维码即可关注编程范微信公众号

编程范最新文章

精品公众号随机推荐

上一篇 >>

lua数据类型