链表的使用
#include<stdio.h>#include<stdlib.h>
typedefstruct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList creat_head()
{
LinkList p;
p=(LinkList)malloc(sizeof(LNode));
p->next=NULL;//(1)
return(p);
}
void print_list(LinkList &L)
{
LinkList p;
for(p=L->next;p!=NULL;)
{
printf("%d",p->data); //(2)
p=p->next;//(3)
}
}
void creat_list(LinkList &L,int n)
{
LinkList p,q;
int i;
p=L;
for(i=1;i<=n;i++)
{
q=(LinkList)malloc(sizeof(LNode));
printf("data:");
scanf("%d",&q->data);
q->next=NULL;
p->next=q;
p=q; //(4)
}
print_list(L);
}
int count(LinkList L,int x)
{
int num=0;
LNode *p;
p=L->next;
while(p&&p->data<=x)
p=p->next;//(5)
while(p)
{
if(p->data >x)//(6)
{
num++;
p=p->next; ;//(7)
}
else
{
p=p->next;
}
}
return num;
}
main()
{
int i,num,n;
LinkList L;
LinkList creat_head(); //创建链表头结点 8
printf("结点个数 n=");
scanf("%d",&n);
creat_list(L,n); //创建n个结点的单链表9
printf("输入一个数:");
scanf("%d",&i);
printf("%d",count(L,i));//10
}
这原本是个填空题,“有一个正整数序列组成的有序单链表,试编写能实现下列功能的算法:确定在序列中比正整数x大的数有几个。”可我写完调了一上午还是没过。。。。。 int count(LinkList L, int x)
{
int num = 0;
LinkList p = L;
while (p)
{
if (x > p->data)
num++;
p = p->next;
}
return num;
}
页:
[1]