當前位置:首頁 » 操作系統 » 鏈表逆序的演算法

鏈表逆序的演算法

發布時間: 2024-09-09 16:45:46

1. C語言用鏈表實現逆序輸出

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

//定義鏈表節點
typedefstructLNode
{intdata;
structLNode*next;
}LNode,*Linklist;

//創建鏈表
Linklistcreate()
{inti,n;//i用於下面循環,n用來存放有效節點的字數
Linklistp,L;
printf("PleaseinputN=");
scanf("%d",&n);
L=(Linklist)malloc(sizeof(LNode));//分配一個不存放有效數據的頭結點
L->next=NULL;
for(i=0;i<n;i++)
{p=(Linklist)malloc(sizeof(LNode));//生成新節點
scanf("%d",&p->data);//輸入元素值
p->next=L->next;
L->next=p;
}
returnL;//返回頭節點;
}
//鏈表反轉輸出
LinklistReverseList(LinklistL,intst)//st為1時輸出結點數據
{if(L->next!=NULL)
ReverseList(L->next,1);
if(st)printf("%d",L->data);
returnL;
}

voidput(LinklistL)
{Linklistp;
p=L->next;
while(p!=NULL)
{printf("%d",p->data);
p=p->next;
}
printf(" ");
}

intmain()
{LinklistL;
L=create();
printf("A:");put(L);
printf("B:");
ReverseList(L,0);//附加結點未保存數據,故第二參數為0
return0;
}

2. 已知鏈表的頭結點head,寫一個函數把這個鏈表逆序。C++ 代碼不是看得很懂。

這個程序的原理就是:假如本來有0-10數(0是頭結點,不考慮逆置)按正常順序排列,現在我把1後面的數斷開,這樣鏈表只剩下0->1了。接下來,我把2插入到鏈表中,就變成了0->2->1,然後在插入3,就變成0->3->2->1,類推,實現1-10的逆置。程序中的p2和p3都是過渡用的結點,你再仔細理解下。

熱點內容
jsp源碼管理系統 發布:2024-09-17 11:24:28 瀏覽:92
伺服器地址手機能在哪兒找到 發布:2024-09-17 11:08:34 瀏覽:90
寶可夢伺服器叫什麼名字 發布:2024-09-17 11:07:57 瀏覽:703
凱迪拉克壓縮比 發布:2024-09-17 11:02:08 瀏覽:703
怎麼用安卓9來養小貓 發布:2024-09-17 10:54:56 瀏覽:380
聯想萬全r520伺服器如何載入 發布:2024-09-17 10:51:35 瀏覽:495
怎麼破解安卓手機root許可權 發布:2024-09-17 10:46:32 瀏覽:456
優酷上傳視頻分享 發布:2024-09-17 10:46:29 瀏覽:883
四川大學期末編譯原理 發布:2024-09-17 10:31:47 瀏覽:534
支付寶的軟體密碼鎖在哪裡 發布:2024-09-17 10:23:58 瀏覽:860