雙向鏈表反轉(zhuǎn)
實現(xiàn)代碼
#include <stdio.h>
#include <stdlib.h>
struct list {
int data;
struct list *prev;
struct list *next;
};
struct list* list_init(int n)
{
int i;
size_t size = 0;
struct list *pn = NULL;
struct list *p = NULL;
size = sizeof(struct list);
if(n <= 0) {
return NULL;
} else {
p = malloc(size);
p->data = 0;
p->next = NULL;
p->prev = NULL;
}
pn = p;
for(i=1; i<n; i++) {
p->next = malloc(size);
p->next->prev = p;
p = p->next;
p->data = i;
}
p->next = NULL;
return pn;
}
void list_print(struct list* pn)
{
struct list *p = NULL;
printf("output:\n");
while(pn) {
printf("%2d ", pn->data);
p = pn;
pn = pn->next;
}
printf("\nreverse output:\n");
while(p) {
printf("%2d ", p->data);
p = p->prev;
}
printf("\n");
}
struct list* list_reverse(struct list* pn)
{
struct list *q = NULL;
struct list *p = NULL;
while(pn) {
p = pn->next;
pn->next = q;
pn->prev = p;
q = pn;
pn = p;
}
return q;
}
int main(int argc, char** argv)
{
int ret;
int len;
struct list *head = NULL;
printf("input length:");
scanf("%d", &len);
head = list_init(len);
list_print(head);
head = list_reverse(head);
list_print(head);
return ret;
}
尚未實現(xiàn)
雙向鏈表反轉(zhuǎn)實在是沒有必要,應(yīng)該是僅在面試筆試時才回出現(xiàn)的吧
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。