链表的操作

链表结构

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;

      }

   }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • include<iostream> using namespace std; //单链表 typedef stru...
    jmychou阅读 3,283评论 0 0
  • include <stdio.h> include <stdlib.h> struct student{int d...
    henry_bin阅读 3,051评论 0 0
  • github->demo1、创建(单链表、双链表、循环链表)2、翻转单链表(递归和非递归)3、判断链表是否存在环。...
    不会游泳De鱼阅读 1,360评论 0 1
  • 早起 天才蒙蒙亮,就醒了,一看手机,才七点。自从女儿上初中,每天早上要给她做饭,还要送她上学开始,现在已经习惯定点...
    飘飘洒洒_e88b阅读 1,810评论 0 2
  • 黄水塘里游着白鸭, 高粱梗油青的刚高过头, 这跳动的心怎样安插, 田里一窄条路,八月里这忧愁? 天是昨夜雨洗过的,...
    不如写首歌给我听阅读 1,396评论 0 0

友情链接更多精彩内容