單向鏈表

冒泡排序 選擇排序 快速排序
//數(shù)據(jù)結(jié)構(gòu) 描述數(shù)據(jù)的組織方式 往往什么樣的數(shù)據(jù)結(jié)構(gòu) 決定了使用什么樣的算法

//鏈表
//單向鏈表

//所謂的指向 就是存儲了人家的地址
typedef struct _Node
{
    int data;
    struct _Node * next;
}Node;//節(jié)點

Node * creatList();//創(chuàng)建
void insertList(Node *head ,int data);//插入
void travereList(Node * head);//遍歷
int lenList(Node *head);//長度
Node *searchList(Node *head,int find);//查找
void deleteList(Node *head,Node *pfind);//刪除
void popSortList(Node *head);//排序
void reverseList(Node *head);//逆置
void destroyList(Node *head);//銷毀

//帶有頭節(jié)點的鏈表  創(chuàng)建空鏈表
Node * creatList()
{
    Node *head = (Node *)malloc(sizeof(Node));
    head->next =NULL;
    return head;
}
void insertList(Node *head ,int data)
{
    Node *cur = (Node *)malloc(sizeof(Node));
    cur->data = data;
    cur->next = head->next;
    head->next = cur;
}
void travereList(Node * head)
{
    head = head->next;
    while(head)
    {
        printf("%2d",head->data);
        head = head->next;
    }
}
int lenList(Node *head)
{
    int count = 0;
    head = head->next;
    while(head)
    {
        count++;
        head = head->next;
    }
    return count;
}
Node *searchList(Node *head,int find)
{
    head =head->next;
    while(head)
    {
        if(head->data == find)
            break;
        head = head->next;
    }
    return head;
}
void deleteList(Node *head,Node *pfind)
{
    while(head->next != pfind)
        head =head->next;
    head->next =pfind->next;
    free(pfind);
      //
      if(pfind->next ==NULL)
      {
        while(head->next != pfind)
            head =head->next;
        head->next =pfind->next;
        free(pfind);
    }
    else//換數(shù)據(jù)
    {
        pfind->data = pfind->next->data;
        Node * t = pfind->next;
        pfind->next = t->next;
        free(t);
    }

}
void popSortList(Node *head)
{
    //交換數(shù)據(jù)
    Node * p,*q;
    int len = lenList(head);
        for(int i = 0 ;i<len-1 ;i++)
    {
        p= head->next;
        q = p->next;
        for(int j=0;j<len-1-i;j++)
        {
            if(p->data >q->data)
            {
                //兩者交換
                p->data ^= q->data;
                q->data ^= p->data;
                p->data ^= q->data;
            }
            p = p->next;
            q = p->next;
        }
    }
      //交換指針
            Node *p,*q,*pre;
      int len = lenList(head);
      for(int i = 0;i<len-1;i++)
     {
        pre = head;
            p = head->next;
            q = p->next;
            for(int j= 0;j<len-1-i;j++)
            {
                if(p->data >q->data)
                {
                 pre->next = q;
                     p->next = q->next;
                     q->next =p;
                     
                    pre =q;
                     q= p->next;
                    continue;
                }
                pre =pre->next;
                p = p->next;
                                q  = q->next;
            }
     }  
}
void reverseList(Node *head)
{
     Node *h = head->next;
     head->next = NULL;
     Node *t;
     while(h)
     {
        t=h->next;
        h->next = head->next;
        head->next = h;
        h=t;
     }
}
void destroyList(Node *head)
{
     Node *t;
     while(head)
    {
        t= head->next;
        free(head);
        head = t;
    }
}
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main
{
      Node *head = createList();
      srand(time(NULL));
      for(int i =0; i<10;i++)
      {
           insertList(head,rand()%10);
      }
      traverList(head);
      int len = lenList(head);
      printf("\nlen = %d\n",len);
      Node*pfind = searchList(head,8);
      if(pfind != NULL)
      {
        printf("find in the list");
        deleteList(head,pfind);
        travereList(head);
      }
      printf("\nafter sort");
      popSortList(head);
      traverList(head);

      reverseList(head);
      traverList(head);

      destroyList(head);
      return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末馍忽,一起剝皮案震驚了整個濱河市砰碴,隨后出現(xiàn)的幾起案子迷守,更是在濱河造成了極大的恐慌,老刑警劉巖扔亥,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谈为,居然都是意外死亡旅挤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門伞鲫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粘茄,“玉大人,你說我怎么就攤上這事秕脓∑獍辏” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵吠架,是天一觀的道長嘹朗。 經(jīng)常有香客問我,道長诵肛,這世上最難降的妖魔是什么屹培? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮怔檩,結(jié)果婚禮上褪秀,老公的妹妹穿的比我還像新娘。我一直安慰自己薛训,他們只是感情好媒吗,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乙埃,像睡著了一般闸英。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上介袜,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天甫何,我揣著相機(jī)與錄音,去河邊找鬼遇伞。 笑死辙喂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播巍耗,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼秋麸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了炬太?” 一聲冷哼從身側(cè)響起灸蟆,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎亲族,沒想到半個月后次乓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡孽水,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年票腰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片女气。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡杏慰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出炼鞠,到底是詐尸還是另有隱情缘滥,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布谒主,位于F島的核電站朝扼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏霎肯。R本人自食惡果不足惜擎颖,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望观游。 院中可真熱鬧搂捧,春花似錦、人聲如沸懂缕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搪柑。三九已至聋丝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間工碾,已是汗流浹背弱睦。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留倚喂,地道東北人每篷。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像端圈,于是被迫代替她去往敵國和親焦读。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一舱权、前言 最近在回顧數(shù)據(jù)結(jié)構(gòu)與算法矗晃,有部分的算法題用到了棧的思想,說起棧又不得不說鏈表了宴倍。數(shù)組和鏈表都是線性存儲結(jié)...
    Java3y閱讀 1,022評論 9 21
  • 一张症、前言 最近在回顧數(shù)據(jù)結(jié)構(gòu)與算法,有部分的算法題用到了棧的思想鸵贬,說起棧又不得不說鏈表了俗他。數(shù)組和鏈表都是線性存儲結(jié)...
    蝦米咬小米閱讀 313評論 0 0
  • 數(shù)據(jù)結(jié)構(gòu)的存儲數(shù)據(jù)結(jié)構(gòu)的存儲一般常用的有兩種 順序存儲結(jié)構(gòu) 和 鏈?zhǔn)酱鎯Y(jié)構(gòu)? 2.1 順序存儲結(jié)構(gòu) 發(fā)揮想象力啊...
    leeandfy閱讀 369評論 0 0
  • 鏈表是最基本的數(shù)據(jù)結(jié)構(gòu),面試官也常常用鏈表來考察面試者的基本能力阔逼,而且鏈表相關(guān)的操作相對而言比較簡單兆衅,也適合考察寫...
    SunnyZhang的IT世界閱讀 981評論 0 1
  • 10月29日面試題 題目 一個單向鏈表增序排序例如:鏈表6->5->7->3->1->2,排序后:1->2->3-...
    雁陣驚寒_zhn閱讀 1,675評論 0 3