美文网首页
链表的操作

链表的操作

作者: CodeFXQ | 来源:发表于2017-03-08 20:17 被阅读12次

链表结构

typedef struct node{   

 int data;    

struct node *next;

}Node; 

1.链表的创建

Node *createList() {   

       Node * head = (Node*)malloc(sizeof(Node));   

       head->next = NULL;   

        return head;

}

2.链表的插入(头插法)

void insertList(Node *head, int insertData){ 

        Node * cur = (Node*)malloc(sizeof(Node));   

       cur->data = insertData;   

       cur->next = head->next;   

        head->next = cur;

}

//尾插法

void Insert()

{  int data,i;

  struct Data *head,*r,*s;  

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

 head->next = NULL;   

   r=head;    

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

s = ( struct Data *)malloc(sizeof (struct Data));

s->num = data;

s->next = r->next;

r->next = s;

r=s;

}

}

3.链表的遍历

void traverseList(Node * head){ 

       head = head->next;  

        while(head)    {    

             printf("%d\n",head->data);    

              head= head->next;   

          }

  }

4.计算链表的长度

int lenList(Node *head){   

       int len = 0;   

       head = head->next;   

       while(head)    {        

              len++;      

              head= head->next; 

        }  

      return len; 

}

5.链表的查找

Node *searchList(Node *head, int findData){  

         head = head->next; 

         while(head)    {      

         if(head->data == findData)      

                break;      

                head= head->next;  

        }    

       return head;

}

6.链表的删除

void deleteNodeList(Node *head, Node *pfind){  

         while(head->next != pfind) head = head->next;  

         head->next = pfind->next;  

         free(find);

   }

7.链表排序

void sortPopList(Node *head, int len){   

      Node* sh = NULL ,*p = NULL,*q = NULL;     

      Node * tmp;   

     for(int i = 0;  i < len-1; i++){

             sh = head;

             p = sh->next;

             q = p->next;

     for(int j=0; j < len - 1 -i; j++)

    {

           if(p->data > q->data)

          {

                 sh->next  = q;

                  p->next = q->next;   

                  q->next = p;

                  tmp = p;

                  p = q;

                  q = tmp;

            }

           sh = sh->next;

           p = p->next;

           q = q->next;

      }

   }

}

相关文章

  • 链表

    文章结构 链表的定义 链表的插入和删除操作 链表的特性 常见的链表结构 自定义链表 链表的经典操作 使用链表实现L...

  • 线性表的链式存储-单链表

    单链表操作 [x] 单链表的创建(尾插法、头插法) [x] 单链表的查找操作 [x] 单链表的删除操作 [x] 单...

  • Java双向链表

    链表节点 链表操作

  • Java环形单向链表

    链表节点 链表操作

  • 重拾算法Day08-链表

    链表 本节主要讲链表,包括链表的构造,链表的插入等操作。

  • Java常用类库与技巧-集合

    一 数据结构常见问题 数组和链表的区别;链表的操作,如反转,链表环路检测,双向链表,循环链表相关操作;队列,栈的应...

  • 大话数据结构之链表(二)

    上一篇《链表概念篇》中, 主要给小伙伴们讲述了什么是链表? 为什么链表是线性结构? 链表的操作是什么? 链表操作的...

  • C语言基础 之 链表操作

    链表的操作 对链表的主要操作有建立链表、结构的查找与输出、结点数据的删除和结点数据的插入示例 动态链表的建立 动态...

  • 循环链表定义及操作

    循环链表定义 定义与单链表一样,操作时将末结点的指针指向开始结点即可 循环链表操作 初始化循环链表 插入(尾插) ...

  • 链表的实用操作函数

    单向链表的操作 /*链表节点声明*/ typedef struct listnode *listpointer; ...

网友评论

      本文标题:链表的操作

      本文链接:https://www.haomeiwen.com/subject/brkigttx.html