码迷,mamicode.com
首页 > 编程语言 > 详细

c语言实现链表操作

时间:2019-08-02 15:02:10      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:creat   i++   main   ext   next   std   while   lis   malloc   

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 typedef struct Node{
  4       int  data;
  5       struct Node   *P_next;
  6 
  7 }Node,* P_node;
  8 
  9 int arr[10]={12,23,11,23,45,56,23,12,1,21};
 10 int g_len=sizeof(arr)/sizeof(int);
 11 
 12 P_node  create_list(int len);
 13 
 14 void  traverse_list(P_node  Phead);
 15 void sort_list(P_node  Phead);
 16 void insert_list(int pos,int data1,P_node  Phead);
 17 void delete_list(int pos,P_node  Phead);
 18 int main()
 19 {
 20    P_node pp;
 21    pp=create_list(g_len);  //创建链表
 22 
 23   traverse_list(pp);
 24   sort_list(pp);
 25   printf("**********************\n");
 26 
 27   insert_list(5,88,pp);
 28   delete_list(5,pp);
 29   traverse_list(pp);
 30   return 0;
 31 }
 32 P_node  create_list(int len)
 33 {
 34    
 35       P_node Pnew;
 36       P_node Ptail;
 37       P_node Phead =malloc(sizeof(Node));  
 38       Ptail=Phead;
 39       for(int  i=0;i<len;i++)
 40           {
 41              Pnew= malloc(sizeof(Node));    
 42           Pnew->data=arr[i];
 43           Ptail ->P_next=Pnew;
 44           //Phead->P_next=Pnew; 
 45           Ptail=Pnew;
 46     }
 47       return Phead;
 48 }
 49 void  traverse_list(P_node  Phead)
 50 { 
 51       P_node pp=Phead->P_next;
 52        for(int i=0;i<10;i++)
 53        {  
 54           if(pp!=NULL)
 55               {
 56                  printf("Phead->data==%d\n",pp->data);
 57               pp=pp->P_next;
 58               }
 59            
 60      }
 61 
 62 }
 63 void sort_list(P_node  Phead)
 64 { 
 65     int i,j;
 66     int  temp;
 67     P_node p;
 68     P_node q;
 69      for(i=0, p=Phead->P_next;i<g_len-1;i++,  p=p->P_next)
 70          {
 71          
 72            for( j=i+1,q=p->P_next;j<g_len;j++,q=q->P_next)
 73             {
 74                 if((p->data)>(q->data))
 75                     { 
 76                        temp=p->data;
 77                p->data=q->data;
 78                q->data=temp;
 79             }
 80          }
 81  
 82      }
 83      
 84   
 85 }
 86 void insert_list(int pos,int data1,P_node  Phead)
 87 {      int num=1;
 88         int i= 0;
 89         P_node pp=Phead;
 90        P_node P_malloc;
 91        P_node qq=Phead;
 92       while(pp!=NULL&&i<pos)
 93       {
 94               i++;        
 95               pp=pp->P_next;
 96         if(i>1)
 97           {
 98                     qq=qq->P_next;
 99         }
100       }
101      
102      P_malloc=(P_node) malloc(sizeof(Node));
103    
104      P_malloc->data=data1;                     
105         P_malloc->P_next=pp;
106 
107         qq-> P_next=P_malloc; 
108     // qq=pp->P_next;
109     // pp->P_next=P_malloc;
110     //P_malloc->P_next=qq;
111 
112 }
113 void delete_list(int pos,P_node  Phead)
114 {
115      P_node  pp=Phead;
116      P_node  qq;
117      P_node  nn=Phead;
118      int i=0;
119    while(pp!=NULL&&i<pos)
120    {
121        i++;
122     pp=pp->P_next;
123     qq=pp->P_next;
124     if(i>1)
125     {
126             nn=nn->P_next;
127     }
128    }
129       nn->P_next  =qq; 
130             
131 }

 

c语言实现链表操作

标签:creat   i++   main   ext   next   std   while   lis   malloc   

原文地址:https://www.cnblogs.com/tian1996/p/11288324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!