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

Posted 编程范

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程经验关于链表还有编译器相关的知识,希望对你有一定的参考价值。

点击蓝字

       最近有小白来问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数据库设计的内容,大家有什么建议没有,有的话欢迎在评论区留言)



以上是关于编程经验关于链表还有编译器的主要内容,如果未能解决你的问题,请参考以下文章

编程经验分享:大神学编程居然从抄代码开始!你敢信?

经验分享学习 C/C++ 编程语言的常用开发工具下载!(汇总)

Oracle Proc编程性能优化经验

编程经验编程开发中最浪费时间和资源的7个错误

我从编程总结的 22 个经验

前阿里P8架构师总结的一些关于Java多线程的编程经验丨干货