逆转一个带头结点的单链表
解决时间 2021-04-26 18:42
- 提问者网友:城市野鹿
- 2021-04-26 05:58
要求:时间复杂度为O(n)。
希望大家帮忙解答一下~~谢啦!!
最佳答案
- 五星知识达人网友:时间的尘埃
- 2021-04-26 06:07
#include <stdio.h>
struct node {
int data;
node* next;
};
void reverse(node* head)
{
node* prev, *next, *tail;
prev = head;
tail = next = prev->next;
while(next) {
node* tmp = next;
next = next->next;
tmp->next = prev;
prev = tmp;
}
head->next = prev;
tail->next = NULL;
}
void create(node* head, int* beg, int* end)
{
head->next = NULL;
node* p = head;
while(beg != end) {
p->next = new node;
p->next->data = *beg++;
p->next->next = NULL;
p = p->next;
}
}
void traversal(node* head)
{
node* p = head->next;
while(p) {
printf("%d ", p->data);
p = p->next;
}
putchar('\n');
}
int main()
{
int a[] = {1,2,3,4,5,6,7,8,9,10};
node head;
create(&head, a, a + 10);
traversal(&head);
reverse(&head);
traversal(&head);
getchar();
}
我要举报
大家都在看
推荐资讯