带头结点的循环单链表
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*Linklist;
void Initlist(Linklist &L){
L=(LNode*)malloc(sizeof(LNode));
L->next=L;
}
int Insert(Linklist &L,int i,int a){
Linklist p,q;
p=(LNode*)malloc(sizeof(LNode));
p->data=a;
q=L->next;
int j=1;
if(i==1){
while(q!=L){
q=q->next;
}
p->next=L->next;
L->next=p;
}
else if(i<1){
printf("error");
return 0;
}
else{
while(j<i-1&&q!=L){
q=q->next;
j++;
}
if(q==L){
printf("error");
return 0;
}
p->next=q->next;
q->next=p;
}
}
void See(Linklist &L){
Linklist p;
p=L->next;
while(p!=L){
printf("%d",p->data);
p=p->next;
}
}
int Delete(Linklist &L,int i){
Linklist p,q,r;
int j=1,k=1;
q=(LNode*)malloc(sizeof(LNode));
p=L;
r=L->next;
while(r!=L&&k<i){
r=r->next;
k++;
}
if(r==L){
printf("error");
return 0;
}
while(j<i){
p=p->next;
j++;
}
q=p->next;
p->next=q->next;
free(q);
}
void Sort(Linklist &L){//½µÐò
Linklist p,q;
p=L->next;
int a;
for(;p!=L;p=p->next){
for(q=p;q!=L;q=q->next){
if(q->data>p->data){
a=q->data;
q->data=p->data;
p->data=a;
}
}
}
}
main(){
Linklist L;
Initlist(L);
int i=0;
int a[5];
printf("请输入五个数:");
for(;i<5;i++){
scanf("%d",&a[i]);
Insert(L,1,a[i]);
}
//Insert(L,0,99);
See(L);
printf("\n");
Sort(L);
See(L);
}