C實現之單鏈表逆置問題

來源:互聯網
上載者:User

標籤:style   blog   io   color   sp   div   問題   log   bs   

 /*
問題描述,如何在時間複雜度為O(n)的前提下,實現單鏈表翻轉。
並盡量減少記憶體消耗。

即1-2-4-5-6轉化為6-5-4-2-1。

*/

1 # include<stdio.h> 4 struct Slist{ 5 6 int size; 7 struct sl* head; 8 9 10 };11 struct sl{12 13 int k;14 struct sl* next;15 16 17 };18 typedef struct Slist Sl;19 typedef struct sl sl;20 21 22 void init(Sl* m,int k){23 24 sl* p = (sl *)malloc(sizeof(sl)); 25 p->k = k;26 p->next = NULL;27 m->head =p;28 m->size = 1;29 //printf("%x, %d, %x", m->head,m->size,p);30 }31 32 void add(Sl* m,int key ){33 //printf("%x", m->head);34 sl* p=(sl *)malloc(sizeof(sl)); 35 sl* q = (sl *)malloc(sizeof(sl));36 p->k = key;37 p->next = NULL;38 q = m->head;39 while (q->next != NULL)40 q = q->next;41 q->next = p;42 m->size++;43 }44 45 void FanZhuan(Sl* m){46 47 sl* p = m->head;48 sl* q =NULL; 49 sl* r =NULL;50 while (p->next!=NULL){ //三指標迴圈記錄轉換,單次掃描,修改鏈表元素指標。51 52 q = p->next;53 p->next = r;54 r = p;55 p = q;56 } //此時,最後一個元素的指標還沒修改完成。57 q->next = r; 58 m->head = q; //鏈表完成後,記得把鏈表頭修改為原鏈表尾地址。59 }60 61 62 void BianLi(Sl* m){63 64 sl* a = m->head;65 printf(" \n");66 while (a != NULL){67 printf("%d",a->k);68 a = a->next;69 }70 }71 72 void main(){73 74 75 Sl* t = (Sl*)malloc(sizeof(Sl));76 t->size=0;77 t->head = NULL;78 init(t,8);79 add(t, 3);80 add(t, 2);81 add(t, 1);82 add(t, 0);83 printf("\n The new list:\n");84 BianLi(t);85 FanZhuan(t);86 printf("\ nThe list turned:\n");87 BianLi(t);88 system("pause");89 }

 

C實現之單鏈表逆置問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.