递归创建并输出链表
2015-11-25 19:24
351 查看
如题,代码如下:
#include <stdio.h>
#include <stdlib.h>
//链表类型
typedef struct list_t
{
int data;
struct list_t *next;
}list_t;
list_t *create_list (int n);
void print_list (list_t *head);
void re_print_list(list_t *head);
int main(int argc, char *argv[])
{
int n = 0;
list_t *head = NULL;
scanf("%d", &n);
head = create_list(n);
printf("\n");
print_list(head);
printf("\n");
re_print_list(head);
printf("\n");
return 0;
}
//创建链表
list_t *create_list(int n)
{
list_t *list_node = NULL;
if (n > 0) {
list_node = (list_t *)malloc(sizeof(list_t));
if (!list_node) {
perror("memory is full!");
exit(-1);
}
scanf("%d", &list_node->data);
list_node->next = create_list(n - 1);
}
return list_node;
}
//递归正向输出
void print_list(list_t *head)
{
if (head) {
printf("%d ", head->data);
print_list(head->next);
}
}
//递归逆向输出
void re_print_list(list_t *head)
{
if (head) {
re_print_list(head->next);
printf("%d ", head->data);
}
}
#include <stdio.h>
#include <stdlib.h>
//链表类型
typedef struct list_t
{
int data;
struct list_t *next;
}list_t;
list_t *create_list (int n);
void print_list (list_t *head);
void re_print_list(list_t *head);
int main(int argc, char *argv[])
{
int n = 0;
list_t *head = NULL;
scanf("%d", &n);
head = create_list(n);
printf("\n");
print_list(head);
printf("\n");
re_print_list(head);
printf("\n");
return 0;
}
//创建链表
list_t *create_list(int n)
{
list_t *list_node = NULL;
if (n > 0) {
list_node = (list_t *)malloc(sizeof(list_t));
if (!list_node) {
perror("memory is full!");
exit(-1);
}
scanf("%d", &list_node->data);
list_node->next = create_list(n - 1);
}
return list_node;
}
//递归正向输出
void print_list(list_t *head)
{
if (head) {
printf("%d ", head->data);
print_list(head->next);
}
}
//递归逆向输出
void re_print_list(list_t *head)
{
if (head) {
re_print_list(head->next);
printf("%d ", head->data);
}
}
相关文章推荐
- cf 602 B(模拟)
- Eclipse将引用了第三方jar包的Java项目打包成jar
- Android常见的Event-driven方案
- Python开发简单记事本
- 汉字转拼音
- App技术框架
- 3d游戏中剧情开启扭转镜头的实现
- Linux shell 倒计时脚本
- 黑马程序员——Java基础——IO流(二)
- 14.3 位块传输
- 【ZooKeeper Notes 8】 zookeeper 权限控制
- cf 602 A(进制转换)
- [spark]计算视频播放数每个区间占用比例
- ST3插件——PlainTasks的使用
- gradle
- 设计模式 - 策略模式
- 单链表
- 并查集模板
- 新认知之WinForm窗体程序
- 怎样应对挑选客户