小甲鱼老湿留的作业
不懂英文都是用拼音写的,让各位见笑了。请大家指正。/* 1.查看链表
2.创建链表(尾插法)
3.链表长度
4.中间节点值
0.退出
请选择你的操作:
功能:编程实现以上内容。
*/
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef structs
{
int data;
struct s*next;
}node;
node *chuangjian(); //创建链表
void shuchu(node *phome); //遍历输出
int changdu(node *phome); //链表长度
int jiedian(node *phome); //中间节点
void main()
{
node *phome;
char ch;
printf("1.查看链表\n");
printf("2.创建链表(尾插法)\n");
printf("3.链表长度\n");
printf("4.中间节点值\n");
printf("0.退出\n\n");
printf("请选择你的操作:\n\n");
phome=chuangjian();
while((ch=getchar()) != '0')
{
switch(ch)
{
case '1': shuchu(phome);break;
case '2': printf("\n链表创建成功(尾插法)\n"); shuchu(phome);break;
case '3': printf("\n链表的长度是:%d\n\n",changdu(phome));break;
case '4': printf("\n链表中间节点的数据是:%d\n\n",jiedian(phome));break;
default: printf("输入的数据错误\n");
}
ch=getchar();
}
}
node *chuangjian() //创建链表
{
node *p,*p1,*p2;
int i;
p=p1=p2=NULL;
for(i=0; i<=10; i++)
{
p1=(node *)malloc(sizeof(node));
if(i==0)
{
p=p2=p1;
}
else
{
p2->next =p1;
p1->data =i;
}
p2=p1;
}
p1->next =NULL;
return p;
}
void shuchu(node *phome) //遍历输出
{
node *p=phome;
printf("链表的各数据如下:\n");
while(p->next)
{
p=p->next ;
printf("%5d",p->data );
}
printf("\n\n");
}
int changdu(node *phome) //链表长度
{
node *p=phome;
int i=0;
while(p->next)
{
p=p->next ;
i++;
}
return i;
}
int jiedian(node *phome) //中间节点
{
int i;
node *kuai,*man;
kuai=man=phome;
while(kuai->next !=NULL)
{
if(kuai->next ->next!=NULL)
{
kuai=kuai->next ->next;
man=man->next ;
}
else
{
kuai=kuai->next ;
}
}
return man->data ;
}
无回帖,不论坛,这才是人道。 感恩无私的分享与奉献 :) 激动人心,无法言表! 我只是路过打酱油的。 强烈支持楼主ing…… {:5_99:}想起了当年我大一时的作业 强烈支持楼主ing…… 无回帖,不论坛,这才是人道。 向你学习 谢谢lz 支持楼主 向你学习 好人必有回报!!!!!
页:
[1]