结构体指针链表基础练习(源代码)

1 篇文章 0 订阅
1 篇文章 0 订阅

    程序编写运行坏境为经典编译坏境VC++6.0。只不过时常卡死,让人郁闷的要死,其他方面还可以。

    该程序主要涉及到C语言的指针,结构体和数据结构的链表,排序算法。多初学者有很大的帮助。我也是一个初学者,把自己的经验分享出来,仅供参考。若有不合适之处,还望大侠多多指点!

#include <stdio.h>;
#include <malloc.h>


struct Node
{
int Num;
struct Node *Link;
};//定义结构体,Link表示指向下一个结点的指针


//用到的三个方法的声明
struct Node *CreateList(int TotalNum);//建立指定长度的链表
void DisplayTheList(struct Node * Head);//将链表显示出来
struct Node *Sort(bool IfAsc,struct Node *Head);//给链表排序,支持从小到大和从大到小排序


void main()
{
printf("Please inter the number you want:\n");
int TotalNum;
scanf("%d",&TotalNum);
printf("please enter %d Numbers\n",TotalNum);
struct Node* ListHead=CreateList(TotalNum);
DisplayTheList(ListHead);
DisplayTheList(Sort(false,ListHead));
}


struct Node *CreateList(int TotalNum)//将输入的数组成链表
{
struct Node *Head,*Tail,*node;
Head=NULL;
for(int i=0;i<TotalNum;i++)
{
if(i==0)
{
node=(struct Node *) malloc (sizeof(Node));
scanf("%d",&node->Num);
Head=node;
}
else
{
node=(struct Node *) malloc (sizeof(Node));
scanf("%d",&node->Num);
Tail->Link=node;
node->Link=NULL;
}
Tail=node;
}
return Head;
}


void DisplayTheList(struct Node * Head)
{
printf("The numbers you entered are:\n\n");
struct Node *Next=Head;
while(Next!=NULL)
{
printf("%d   ",Next->Num);
Next=Next->Link;
}
}


struct Node *Sort(bool IfAsc,struct Node *Head)
{
struct Node *Next,*Now;
Now=Head;
Next=Head;
int Temp;
if(Head->Link!=Head)//如果不这样处理,单节点的时候会出错!
{
while(Now->Link!=NULL)
{
Next=Now->Link;
while(Next!=NULL)
{
if(IfAsc)
{
if(Next->Num <= Now->Num)
{
Temp=Next->Num;
Next->Num=Now->Num;
Now->Num=Temp;
}
}
else
{
if(Next->Num >= Now->Num)
{
Temp=Next->Num;
Next->Num=Now->Num;
Now->Num=Temp;
}
}
Next = Next->Link;
}
Now=Now->Link;
}
}
return Head;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值