线性表(a1,a2,a3,…,an)中元素递增有序且按顺序存储于计算机内。要求设计一算法完成:

如题所述

第1个回答  2013-05-29
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct line
{
int data;
line *next;
}Line;
void print(Line *head);
void search(Line *head);
void insert(Line *head,int data);
void change(Line* q);
void search(Line *head)
{
Line *p,*q;
int data,flag=0;
q=head;
p=head->next;
printf("input data:");
scanf("%d",&data);
while (p!=NULL)
{
if(p->data==data)
{
flag=1;
break;
}
q=p;
p=p->next;
}
if(flag==0)
insert(head,data);
else if(flag==1)
change(q);
}
void change(Line* q)
{
Line *p;
p=q->next;
if(p->next==NULL)
return;
q->next=p->next;
p->next=NULL;
q=q->next;
p->next=q->next;
q->next=p;
}
void insert(Line *head,int data)
{
Line *p,*q,*r;
int flag=0;
r=(Line*)malloc(sizeof(Line));
r->next=NULL;
r->data=data;
q=head;
p=head->next;
while (p!=NULL)
{
if(p->data>=data)
{

break;
}
q=p;
p=p->next;
}
r->next=p;
q->next=r;
}
void print(Line *head)
{
Line *p;
p=head->next;
int n=0;
while (p!=NULL)
{
printf("%4d",p->data);
p=p->next;
n++;
if (n%10==0)
{
printf( "\n");
}
}
}
void main()
{
Line *head;
head=(Line*)malloc(sizeof(Line));
head->next=NULL;
while (true)
{
system("pause");
system("cls");
int c;
printf("1.insert\n");
printf("2.print\n");
printf("make a choise:");
scanf("%d",&c);
switch(c)
{
case 1:search(head);break;
case 2:print(head);break;
default:exit(1);break;
}
}

}本回答被网友采纳
相似回答