/*
0 2 4 6 8
8 6 4 2 0
Press any key to continue
*/
#include <stdio.h>
#include <stdlib.h>
#define ELTYPE int
typedef struct node {
ELTYPE m;
struct node *next;
} *NODE;
void InversionNode(NODE head) {
NODE p,t,q;
p = NULL;
t = head->next;
q = t->next;
if(t == NULL || q == NULL) return; // 空表和仅有一个结点的链表不用倒置
while(q) {
t->next = p; // 倒置结点
p = t; // p指向新倒置的结点
t = q; // 前进一个结点
q = q->next;
}
t->next = p; // 处理最后一个结点
head->next = t; // head指向倒置后的链表
}
void ShowNode(NODE head) {
NODE p = head->next;
for(;p;p = p->next){
printf("%d ",p->m);
}
printf("\n");
}
NODE CreatNode(int n) { // 创建有头结点的单向链表
int i;
NODE head,p,q;
head = p = (NODE)malloc(sizeof(struct node));
for(i = 0; i < n; ++i) {
q = (NODE)malloc(sizeof(struct node));
q->m = 2 * i;
p->next = q;
p = q;
}
p->next = NULL;
return head;
}
int main() {
NODE head = CreatNode(8);
ShowNode(head);
InversionNode(head);
ShowNode(head);
return 0;
}
分享到:
相关推荐
链表的创建和输出链表的创建和输出链表的创建和输出链表的创建和输出链表的创建和输出链表的创建和输出链表的创建和输出链表的创建和输出
3、将两个从小到大排列的链表合并为一个新链表(仍然有序排列),输出合并前的两个链表,输出合并后的链表,检查合并是否成功。
c语言简单数据结构基础,链表应用,简单链表创建,插入,输出
本代码,实现了基本的链表结构,同时完成了链表的翻转操作。链表的翻转是IT程序员面试时的常见问题,对找工作的同学,进一步了解链表的性能,有很大的帮助。
链表创建-输出-删除-示例2.cpp
链表 建立 输出 插入 查找 求和 求平均值
有关c语言静态链表的创建 有兴趣可以看看啊
要求控制台显示如下内容,然后根据前方数字进行相应操作 1、创建一条含整数结点的无序链表 2、链表结点的输出 3、链表结点的升序排序 4、分别计算链表中奇数和偶数结点之和并输出 5、释放链表 0、退出
这是一个简单的java程序,用于实现对输入字符的逆序输出。初学者可以参考。
创建链表插入删除创建链表插入删除创建链表插入删除
耿国华版数据结构二叉链表叶子节点输出的完整程序,上机试过了,希望能帮到有需要的人。
建立一个递增有序的双链表。功能是随机生成8个结点数据,每生成一个结点则申请空间得到一个指针,将数据存放到指针所指的数据域中,然后将结点插入到已经排好序的双链表中。所以第一步工作是判断新结点的插入位置,...
问题:如何实现一个高效的单向链表逆序输出?出题人:阿里巴巴出题专家:昀龙/阿里云弹性人工智能负责人参考答案:下面是其中一种写法,也可以有不同的写法,比如递归等。
c++编写的图的邻接链表创建形式,希望对你有帮助
建立正序链表 c语言链表正序输出,建立正序链表,该怎么处理
链表的创建与两链表的合并链表的创建与两链表的合并
c++实现链表创建排序查找删除所有单链表功能
数据结构实训程序:创建链表,插入,删除,查询等。 数据结构实训程序:创建链表,插入,删除,查询等。
\创建链表,删除查找\创建链表,删除查找
链表的节点定义,链表的创建、插入、删除。