码迷,mamicode.com
首页 > 其他好文 > 详细

单向链表

时间:2018-09-24 18:57:15      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:print   单向链表   个数   node   max   ++   头插法   输出   null   

#include<stdio.h>
#include<stdlib.h>
#define N 6

typedef struct node{
int data;
struct node *next;
}ElemSN;

ElemSN * Creatlink(int a[]);
int Count(ElemSN *h);
int Countoddnode(ElemSN *h);
ElemSN *Maxnode(ElemSN *h);
void Print(ElemSN *h);
ElemSN * PPrintlink(ElemSN *h);
void Printlink(ElemSN *h1);

int main(void)
{
int a[6]={3,2,5,8,4,7};
ElemSN *head,*pmax,*h1;
int n,m;
//创建单向链表
head=Creatlink(a);
//输出结点个数
n=Count(head);
printf("结点个数%d\n",n);
//奇数结点个数
m=Countoddnode(head);
printf("奇数结点个数%d\n",m);
//返回最大值
pmax=Maxnode(head);
printf("最大值%d\n",pmax->data );
//输出单向链表
Print(head);
printf("\n");
//逆向输出单向链表
h1=PPrintlink(head);
Printlink(h1);
}

ElemSN * Creatlink(int a[])
{
int i;
ElemSN *h,*p;
h=p=(ElemSN *)malloc(sizeof(ElemSN));
h->data=a[0];
h->next=NULL;
for(i=1;i<N;i++)
{
p=p->next =(ElemSN *)malloc(sizeof(ElemSN));
p->data=a[i];
p->next=NULL;
}
return h;
}

int Count(ElemSN *h)
{
ElemSN *p;
int n=0;
for(p=h;p!=NULL;p=p->next)
{
n++;
}
return n;
}

int Countoddnode(ElemSN *h)
{
ElemSN *p;
int count=0;
for(p=h;p;p=p->next)
{
if(p->data %2)
count++;
}
return count;
}

ElemSN *Maxnode(ElemSN *h)
{
ElemSN *p,*pm;
for(pm=h,p=h->next ;p;p=p->next)
{
if(p->data >pm->data )
pm=p;
}
return pm;
}

void Print(ElemSN *h)
{
ElemSN *p;
for(p=h;p!=NULL;p=p->next)
{
printf("%5d",p->data);
}
}

ElemSN * PPrintlink(ElemSN *h)
{
ElemSN *p,*h1=NULL; //头插法
while(h)
{
p=h;
h=h->next;
p->next=h1;
h1=p;
}
return h1;
}
void Printlink(ElemSN *h1)
{
ElemSN *p;
for(p=h1;p!=NULL;p=p->next)
{
printf("%5d",p->data);
}
}

单向链表

标签:print   单向链表   个数   node   max   ++   头插法   输出   null   

原文地址:https://www.cnblogs.com/laziya/p/9696186.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!