#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
#define MAX 100
struct Link {
int data;
struct Link* next;
};
//链表操作,只需要初始化传回指针
//改动链表操作,都需要返回指针
//函数传递都采用指针传递 struct Link* L
struct Link* Init(struct Link* L); //初始化顺序表
void HSert(struct Link* L, int e); //在链表的最后加入数据
void bianli(struct Link* L); //遍历链表
void fan(struct Link* L);
void paixu(struct Link* L);
int main()
{
int i = 0, j = 0;
struct Link* L = NULL;
L = Init(L);
HSert(L, 1);
HSert(L, 2);
HSert(L, 4);
HSert(L, 3);
HSert(L, 6);
paixu(L);
bianli(L);
printf("\n");
printf("\n");
paixu(L);
bianli(L);
return 0;
}
struct Link* Init(struct Link* L)
{
L = (struct Link*)malloc(sizeof(struct Link));
L->next = NULL;
if (L == NULL)
{
printf("初始化失败\n");
exit(0);
}
else
{
printf("初始化成功\n");
return L;
}
}
void HSert(struct Link* L, int e)
{
struct Link* p = NULL, * q = L;
p = (struct Link*)malloc(sizeof(struct Link));
p->next = NULL;
p->data = e;
while (q->next != NULL)
{
q = q->next;
}
q->next = p;
}
void bianli(struct Link* L)
{
struct Link* p = L;
while (p->next)
{
p = p->next;
printf("表中数据为 = %d\n", p->data);
}
}
void fan(struct Link* L)
{
struct Link* p = L->next, * q = NULL;
L->next = NULL;
while (p!=NULL)
{
q = p->next;
p->next = L->next;
L->next = p;
p = q;
}
}
void paixu(struct Link* L)
{
int data = 0;
struct Link* p = L->next, * q = NULL;
while (p->next!=NULL)
{
q = p->next;
while (q)
{
if (p->data > q->data)
{
data = q->data;
q->data = p->data;
p->data = data;
}
q = q->next;
}
p = p->next;
}
}
链表排序和翻转
最新推荐文章于 2024-08-29 18:01:01 发布
该代码示例展示了如何使用C语言创建一个链表结构,并实现链表的初始化、在末尾插入元素、遍历链表、反转链表以及对链表进行排序的功能。主要函数包括Init()、HSert()、bianli()、fan()和paixu()。
摘要由CSDN通过智能技术生成