#include<stdio.h>
#include<stdlib.h>
//设有一个带头结点的单链表L,节点的结构为(data,next),其中data为整数元素,next为后继节点的指针,设计一个算法,首先按递减次序输出该单链表中各节点的数据元素,然后释放所有节点占用的存储空间,并要求算法的空间复杂度为O(1)
typedef struct LNode {
int data ;
struct LNode* next;
}LNode;
void Create(LNode*& L, int n)
{
L = (LNode*)malloc(sizeof(LNode));
L->next = NULL;
LNode* p;
LNode* q = L;
for (int i = 0; i < n; i++)
{
p = (LNode*)malloc(sizeof(LNode));
p->next = NULL;
scanf("%d", &p->data);
q->next = p;
q = p;
}
}
void ListPrint(LNode*& L)
{
LNode* p = L;
while (p ->next!= NULL)
{
p = p->next;
printf("%d ", p->data);
}
return;
}
void sort_list(LNode*& L)
{
LNode* p, * q;
int t;
for (p = L; p != NULL; p = p->next)
{
for (q = p->next; q != NULL; q = q->next)
{
if (q->data > p->data)
{
t = q->data;
q->data = p->data;
p->data = t;
}
}
}
}
void ClearList(LNode*& L)
{
LNode* p;
while (L->next)
{
p = L->next;
L->next = p->next;
free(p);
}
}
int main()
{
LNode* L = (LNode*)malloc(sizeof(LNode));
printf("请输入6个数字:\n");
Create(L, 6);
sort_list(L);
ListPrint(L);
ClearList(L);
return 0;
}
递减输出。
最新推荐文章于 2022-11-25 16:39:01 发布