[数据结构]链表创建、打印、反转
来源:互联网 发布:软件著作权简历 编辑:程序博客网 时间:2024/04/29 05:37
- struct _Node
- {
- int data;
- _Node *next;
- };
- typedef struct _Node Node;
- /*****************************************************
- Test 3: Node *CreateList(Node *head)
- *****************************************************/
- Node *CreateList()
- {
- Node *head = NULL;
- Node *cur = NULL;
- Node *pre = NULL;
- cur=pre=head=(Node*)malloc(sizeof(Node));
- cout<<"Please input the first node:";
- cin>>cur->data;
- cur->next=NULL;/*将新节点的指针置为空*/
- while(cur->data != 0)/*输入节点的数值不等于0*/
- {
- pre->next=cur;/*非空表,接到表尾*/
- pre=cur;
- cur=(Node*)malloc(sizeof(Node));//申请下一个节点
- cout<<"Please input next node(zero to exit):";
- scanf("%d",&cur->data);/*输入节点的值*/
- }
- pre->next = NULL; /*输入cur->data = 0, 抛弃*/
- return head;/*返回链表的头指针*/
- }
- /*****************************************************
- Test 4: void PrintfList(Node *head)
- *****************************************************/
- void PrintList(Node *head)
- {
- Node *cur = head;
- cout<<"List:";
- if(cur == NULL)
- {
- cout<<"NULL"<<endl;
- return;
- }
- while(cur != NULL)
- {
- cout<<"("<<cur->data<<")"<<"->";
- cur = cur->next;
- }
- cout<<endl;
- }
- /*****************************************************
- Test 5: Node * ReverseList(Node *head)
- *****************************************************/
- Node *ReverseList(Node *head)
- {
- if(head == NULL)
- return NULL;
- Node *cur,*pre,*nex = NULL;
- pre = head;
- cur = head->next;
- while(cur != NULL)
- {
- nex = cur->next;
- cur->next = pre;
- pre = cur;
- cur = nex;
- }
- head->next = NULL;
- head = pre;
- return head;
- }
- /*****************************************************
- Test 6: Node * ReverseListRecursion(Node *head)
- *****************************************************/
- Node *ReverseListRecursion(Node *head)
{
if(head == NULL || head->next == NULL)
return head; - Node *newHead = ReverseListRecursion(head->next);
head->next->next = head;
head->next = NULL; - return newHead;
}
调用
- /*****************************************************
- Test : Node *CreateList(Node *head)
- *****************************************************/
- Node *list = CreateList();
- /*****************************************************
- Test : void PrintfList(Node *head)
- *****************************************************/
- cout<<"The List looks like this:"<<endl;
- PrintList(list);
- /*****************************************************
- Test : Node * ReverseList(Node *head)
- *****************************************************/
- //Node *reverselist = ReverseList(list);
- //PrintList(reverselist);
- Node *reverselistRecursion = ReverseListRecursion(reverselist);
- PrintList(reverselistRecursion);
- System("pause");
截屏
- [数据结构]链表创建、打印、反转
- 链表的创建 打印 反转
- 一个链表创建、反转、打印的C语言代码
- 数据结构:链表的创建和打印
- 数据结构-链表创建,删除,插入,反转,连接
- 反转链表[数据结构]
- 反转链表[数据结构]
- 链表反转-数据结构
- 牛客网--链表反转打印
- 链表创建、反转
- 数据结构 -链表反转问题
- 数据结构之链表反转
- 数据结构之反转链表
- 数据结构 链表的反转
- 数据结构-反转链表详解
- 数据结构之链表反转
- 程序员面试100题(算法)之反转单链表(含单向链表的创建和打印)
- C语言各种链表操作(创建、打印、删除、插入、反转)
- EM_SETREADONLY
- 远程桌面登不起,出现加载个人设置就不动了
- VIM学习笔记
- csdn中如何快速获取可用分?(为了方便看)
- nginx日志管理
- [数据结构]链表创建、打印、反转
- FreeRadius 1.1.7 + Postgresql 8.1.5 (FreeBSD 6.1系统)
- T-sql 学习(2) - join与group by
- OracleJOB的建立,定时执行任务
- PHPBB3的用户密码
- #pragma data_seg介绍
- Android大赛首轮获奖作品解析
- 超级入门:JAVA从零开始到HelloWorld
- 运行新进程