学习代码3

include

include

include

include

include

define MAXSIZE 100

//54,89,13,09,79,88,32,70,44,07

typedef int datype;
typedef struct Node
{
datype data;
struct Node next;
}Node,
LinkList;

int main( )
{
void InitList(LinkList *L); //初始化
void show(LinkList L); //显示
int Del(LinkList L); //删除
int Dele(LinkList L); //删除重复数据
void Sort(LinkList L); //排序
void Delm(LinkList L); //删除最大值
void Rever(LinkList L); //链表逆置
int Add(LinkList L); //插入
int Delb(LinkList L); //删除区间
///////////
LinkList L;
InitList(&L);
int ch;
while(1)
{
printf(" — — — — — —\n");
printf(" 0---退出系统 \n");
printf(" 1---插入 \n");
printf(" 2---删除 \n");
printf(" 3---排序 \n");
printf(" 4---删重 \n");
printf(" 5---删除区间 \n");
printf(" 6---删除最大值 \n");
printf(" 7---逆置 \n");
printf(" 9---链表显示 \n");
printf(" — — — — — —\n");
printf(" ;");
scanf("%d",&ch);
switch(ch)
{
case 0:;printf("感谢使用! ");printf("退出系统!\n");exit(0);
case 1:Add(L);break;
case 2:Del(L);break;
case 3:Sort(L);break;
case 4:Dele(L);break;
case 5:Delb(L);break;
case 6:Delm(L);break;
case 7:Rever(L);break;
case 9:show(L);break;
default:printf("菜单选择错误!\n");
}
}
return 0;

}

void InitList(LinkList L)//初始化
{
datype i,n=10;
Node s,r;
L=(Node)malloc(sizeof(Node));
r=
L;
datype a[10]={54,89,13,9,79,88,32,70,44,7};
for (i=0;i {
s=(Node*)malloc(sizeof(Node));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}

void show(LinkList L)//显示
{
system("cls");
Node *p;
p=L->next;
while(p)
{
printf("%11d\n",p->data);
p=p->next;
}
printf(" — — — — — —\n");
}

int Del(LinkList L)//删除
{
system("cls");
datype i,k;
Node s,r;
r=L;
k=0;
printf("请输入位置;");
scanf("%d",&i);
while(r->next && k {
r=r->next;
k++;
}
if (r->next==NULL){
printf("删除位置不合法!\n按任意键继续.....\n");
getch();
return 0;
}

s=r->next;
r->next=s->next;
free(s);
show(L);
return 0;

}

int Dele(LinkList L)//删重
{
system("cls");
Node *r;
r=L->next;
while(r!=NULL)
{
Node s,p;
s=r;
p=s->next;

	while(p!=NULL)
	{
		if (p->data == r->data){
			s->next=p->next;
			p=p->next;

		}else{
			p=p->next;
			s=s->next;
		}
	}
	r=r->next;
}
return 1;

}

void Sort(LinkList L)//排序
{
system("cls");
Node s,r,*tail;
datype i;
r=tail=L;
while(tail!=NULL)
{
tail=tail->next;
}
while(r->next!=tail)
{
s=r->next;
while(s->next!=tail)
{
if (s->data > s->next->data) i=s->data,s->data=s->next->data,s->next->data=i;
s=s->next;
}tail=s;
}show(L);
}

void Delm(LinkList L)//删除最大值
{
system("cls");
datype max;
Node r,s,p,q;
r=L->next,max=r->data;

	while(r->next)
	{	
		s=r->next;
		if (max < s->data)	max=s->data;
		r=r->next;
	}

	while(p->next)
	{
		q=p->next;
		if (max == q->data){p->next=q->next,free(q);break;
		}else {p=p->next;}
	}
show(L),printf("最大值为;%d\n",max);

}

void Rever(LinkList L)//逆置
{
system("cls");
Node s,r;
r=L->next,L->next=NULL;
while(r!=NULL)
{
s=r->next;
r->next=L->next,L->next=r;
r=s;
}show(L);
}

int Add(LinkList L)//插入
{
system("cls");
datype i,dt,k;
Node s,r;
k=0;
printf("请输入位置;");
scanf("%d",&i);
r=L;
while(r->next && k {
r=r->next;
k++;
}
if (r->next==NULL){
printf("插入位置不合法!\n按任意键继续.....\n");
getch();
return 0;
}
s=(Node*)malloc(sizeof(Node));
printf("请输入数据;");
scanf("%d",&dt);
s->data=dt;
s->next=r->next;
r->next=s;
show(L);
return 0;
}

using namespace std;
int Delb(LinkList L)//删除区间
{
system("cls");
datype max,min;
Node r,s;
r=L;
printf("请输入要删除的数据区间,小(空格)大;");
cin >> min,cin >> max;
if(min>max)
{
printf("max的值应比mink的值大\n按任意键继续.....\n");
getch();
return 0;
}

while(r->next){
	s=r->next;
	if (min < s->data && max > s->data){	r->next=s->next,free(s);}
	else{r=r->next;}
}show(L);return 0;

}

你可能感兴趣的:(学习代码3)