C语言 链表尾插入和逆序
来源:互联网 发布:淘宝美工设计软件 编辑:程序博客网 时间:2024/05/18 02:08
链表逆序只需要一次遍历,用三个指针。
#include <stdio.h>
#include <stdlib.h>struct Node
{
char ch;
struct Node *next;
};
void add(struct Node *head,char ch)//尾插入
{
struct Node *tmp = head;
struct Node *newnode;
while(NULL != tmp->next)
{
tmp = tmp->next;
}
newnode = (struct Node *)malloc(sizeof(struct Node));
newnode->ch = ch;
tmp->next = newnode;
newnode->next = NULL;
}
void reversed_list(struct Node *head)//链表逆序
{
struct Node *tmp = head->next;
struct Node *p = head->next->next;
struct Node *q = p->next;
while(NULL != q)
{
p->next = tmp;
tmp = p;
p = q;
q = q->next;
}
p->next = tmp;
head->next->next = NULL;
head->next = p;
}
void print_list(struct Node *head)//显示全部的节点
{
struct Node *tmp = (head->next);
while(tmp != NULL)
{
printf("%c ",tmp->ch);
tmp = tmp->next;
}
printf("\n");
}
void release_all(struct Node **head)//释放所有
{
struct Node *tmp = (*head);
struct Node *p;
while(NULL != tmp->next)
{
p = tmp->next;
tmp->next = p->next;
free(p);
}
free(*head);
(*head) = NULL;
}
int main()
{
struct Node *head;
char ch;
int i;
head = (struct Node *)malloc(sizeof(struct Node));
head->next = NULL;
for(i = 0; i < 5; i++)
{
printf("输入:");
scanf("%c",&ch);
getchar();
add(head,ch);
}
reversed_list(head);
print_list(head);
release_all(&head);
return 0;
}
0 0
- C语言 链表尾插入和逆序
- c语言实现直接插入排序(正序和逆序)
- C语言-字符串逆序
- C语言单链表逆序
- 【C语言】 字符串逆序
- C语言经典算法100例-073-链表逆序插入节点
- c语言实现字符串逆序
- C语言实现逆序数
- c语言数组的逆序
- 关于c语言逆序输出
- 【C语言】逆序输出字符串
- c语言:逆序的三位数
- C语言实验-数组逆序
- c语言 数组元素逆序
- C语言链表逆序
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 插入排序C语言
- 上班感悟
- 异常处理
- windows平台开发react-native的那些坑
- Object
- 对一阶二阶低通数字滤波器的理解
- C语言 链表尾插入和逆序
- String
- Python最简单的一个接口自动化框架
- Google Guava Cache
- 进程之间的通信 ------内存共享
- System
- mybatis入门
- C语言标准输出函数 printf()
- Request,Response编码解码原理,文件上传下载和底层IO