遍历一次把单链表反转
来源:互联网 发布:java web视频教程 刘意 编辑:程序博客网 时间:2024/05/22 08:18
遍历一次把单链表反转
#include <stdio.h>
#include <stdlib.h>typedef struct student {
int num;
struct student *next;
}List;
List *creat_list(void) /*创建链表,当输入0的时候就结束*/
{
int n = 0;
List *head;
List *p1,*p2;
p1=p2=(List*)malloc(sizeof(struct student));
scanf("%d",&p1->num);
head = NULL;
while(p1->num!=0)
{
n = n+1;
if(1==n)
head = p1;
else
p2->next = p1;
p2 = p1;
p1 = (List*)malloc(sizeof(struct student));
scanf("%d",&p1->num);
}
p2->next = NULL;
return head;
}
void print_list(List *head) /*打印链表*/
{
List *p;
p = head;
do{
printf("num is:%d\n",p->num);
p = p->next;
}while(p);
}
List *reverse_list(List *head)/*反转链表*/
{
List *h,*cur,*fellow; //h指向头节点,cur指向当前节点,fellow指向当前节点的下一个
h = head;
cur = h->next;
fellow = cur->next;
h->next = NULL; //设置链表的结尾
while(cur)
{
cur->next = h; //把当前节点的next指向h,
h = cur; //h向前推移
cur = fellow;//当前节点指向下一个节点
if(cur)//如果fellow不是NULL
fellow = fellow->next;
}
return h;
}
int main(int argc, char **argv)
{
List *h;
List *head;
h = creat_list();
print_list(h);
head = reverse_list(h);
printf("After reverse:\n");
print_list(head);
return 0;
}
- 遍历一次把单链表反转
- 遍历一次反转单链表
- 遍历一次反转单链表
- 遍历一次实现单链表顺序反转
- 一次遍历完成单链表的反转
- 遍历一次实现单链表顺序反转
- 一次遍历反转链表
- (C语言)链表的反转(一次遍历)
- 只遍历一次,将单链表中的元素顺序反转过来
- 单链表一次遍历反序
- 逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表
- 逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表
- 编写一个函数,给定一个头指针的单链表,要求只遍历一次,将链表中的元素次序反转。
- 一次遍历单链表中间节点
- 反转句子的词序,就是全部反一次,然后把每个词再返回来。
- 带头结点的单链表( 冒泡排序 一次遍历求中间结点的值) 链表 就地反转 倒数第k个结点
- java实现单链表反转(遍历方式)
- 编程之美(一)单链表只遍历一次实现元素反转
- Android中ContentProvider的使用
- 存储过程
- Java获取系统信息(cpu,内存,硬盘,进程等)的相关方法 .
- oracle sid,instance_name,db_name,oracle_sid之间的关系
- java,c,c++ 语言之间基本数据类型的比较
- 遍历一次把单链表反转
- mrtg 监控其他 服务
- ASP.NET Sql Server安装向导(aspnet_regsql.exe)错误解决一例
- 《微软未来的“秘密武器”》
- 拖动的ListView,并且支持行删除功能
- cookie与session的区别
- 在线文本编辑器
- VB.NET listview 的虚模式
- 加密与解密