欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C數(shù)據(jù)結(jié)構(gòu)之雙鏈表詳細(xì)示例分析

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

復(fù)制代碼 代碼如下:

 typedef struct node
{
      struct node *prior;
      struct node *next;
       int num;
}NODE;
/*******雙向鏈表的初始化********/
NODE *Init_link(void)
{
     int i;
     NODE *phead,*pb,*pi;
     phead = (NODE *)malloc(sizeof(NODE));
     printf("please input num:\n");
     scanf("%d",&(phead->num));
     phead->prior = NULL;
     phead->next = NULL;
     pb = phead;
     for(i=0; i<3; i++)
     {
          pi = (NODE *)malloc(sizeof(NODE));
          printf("please input num:\n");
              scanf("%d",&(pi->num));
          pi->next = NULL;
          pb->next = pi;
          pi->prior = pb;
          pb = pi;
     }
     return phead;
}
/******鏈表的輸出******/
void print_link(NODE *phead)
{
 while(phead != NULL)
 {
  printf(" %d,",phead->num);
  phead = phead->next;
 }
 printf("\n");
}
/******鏈表的逆序******/
NODE *reverse_link(NODE *phead)
{
 NODE *pb,*pf,*temp;
 pb = phead;
 pf = pb->next;
 while(pf != NULL)
 {
  temp = pf->next;
  pf->next = pb;
  pb->prior = pf;
  pb = pf;
  pf = temp;
 }
// phead->prior = pf->prior;
 phead->next = NULL;
 phead = pb;
 return phead;
}
/*****鏈表的排序*****/
NODE *Order_link(NODE *phead)
{
     NODE *pb,*pf,*ptr,temp;
     pb = phead;
     while(pb->next != NULL)
     {
          pf = pb->next;
          while(pf != NULL)
          {
               if(pb->num > pf->num)
               {
                     temp = *pb;
                    *pb = *pf;
                    *pf = temp;
                     ptr = pb->next;
                     pb->next = pf->next;
                     pf->next = ptr;
                     ptr = pb->prior;
                     pb->prior = pf->prior;
                     pf->prior = ptr;
              }
             pf = pf->next;
        }
        pb = pb->next;
    }
    return phead;
}
/******鏈表的有序插入*****/
NODE *insert_link(NODE *phead,NODE *pi)
{
 NODE *pb,*pf;
 pb = phead;
 if(pi == NULL)
  return phead;
 if(phead == NULL)
 {
  phead = pi;
  pi->prior = NULL;
  pi->next =NULL;
 }
 else
 {
  while( (pi->num > pb->num)&&(pb->next!=NULL))
  {
   pf = pb;
   pb = pb->next;
  }
  if(pi->num <= pb->num)
  {
   if(pb == phead)
   {
    pi->next = phead;
    pi->prior = NULL;
    phead->prior = pi;
    phead = pi;
   }
   else
   {
    pi->next = pb;
    pb->prior = pi;
    pi->prior = pf;
    pf->next = pi;
   }
  }
  else
  {
   pi->next = NULL;
   pi->prior = pb;
   pb->next = pi;
  }
 }
 return phead;
}
/******鏈表的刪除*****/
NODE *delete_link(NODE *phead, NODE *pi)
{
 NODE *pb,*pf;
 pb = phead;
 while(pb != NULL)
 {
  if(pb == pi)
  {
   if(pb == phead)
    phead = phead->next;
   else if(pb->next == NULL)
    pf->next = NULL;
   else
   {
    pf->next = pb->next;
    //pb->next->prior = pf;
   }
  }
  pf = pb;
  pb = pb->next;
 }
 return phead;
}
/*******鏈表的釋放******/
void free_link(NODE *phead)
{
 NODE *pb;
 while(phead != NULL)
 {
  pb = phead->next;
  free(phead);
  phead = pb;
 }
 printf("released link success!\n");
}
/*******測(cè)試程序******/
int main(void)
{
 NODE *phead,*pi;
 phead = Init_link();
 printf("init link:\n");
 print_link(phead);

 pi = (NODE *)malloc(sizeof(NODE));
 printf("plaese input insert num:");
 scanf("%d",&(pi->num));
 phead = insert_link(phead,pi);
 printf("after insert link:\n");
 print_link(phead);
 phead = Order_link(phead);
 printf("after sort link:\n");
 print_link(phead);

 printf("after reverse link:\n");
 phead = reverse_link(phead);
 print_link(phead);
 phead = delete_link(phead, pi);
 printf("after delete link:\n");
 print_link(phead);
 free_link(phead);
 return 0;
}

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有