#include<stdio.h>
#include<stdlib.h>
#define Maxsize 50
typedef struct Lnode{
int data;
struct Lnode *next;
}Lnode,*LinkList;
void InitList(LinkList &L){
L=(Lnode *)malloc(50*sizeof(Lnode));
L->next=NULL;
}
void HeadInsert(LinkList &L){
Lnode *s;
L=(Lnode *)malloc(sizeof(Lnode));
L->next=NULL;
int i;
scanf("%d",&i);
while(i!=999){
s=(Lnode *)malloc(sizeof(Lnode));
s->data=i;
s->next=L->next;
L->next=s;
scanf("%d",&i);
}
}
void LastInsert(LinkList &L){
L=(Lnode *)malloc(sizeof(Lnode));
L->next=NULL;
Lnode *s;
Lnode *p=L;
int i;
scanf("%d",&i);
while(i!=999){
s=(Lnode *)malloc(sizeof(Lnode));
p->next=s;
s->next=NULL;
s->data=i;
p=p->next;
scanf("%d",&i);
}
}
//void apart(LinkList &L,LinkList &L1,LinkList &L2){
// L1=L;
// L2=(Lnode *)malloc(sizeof(Lnode)); //Í·²å·¨
// L2->next=NULL;
// Lnode *p,*q,*r;
// p=L->next;
// r=L1;
// while(p!=NULL){
// r->next=p;
// r=p;
// p=p->next;
// p->next=L2->next;
// L2->next=p;
// q=p->next;
// p=q;
// }
// r->next=NULL;
//}
bool ListDelete(LinkList &L,int n){
Lnode *p,*q;
p=L;
int i=1;
if(i<=0)
return false;
while(i<n&&p!=NULL){
i++;
p=p->next;
}
if(p==NULL)
return false;
else{
q=p->next;
if(p->next==NULL)
return false;
p->next=q->next;
free(q);
return true;
}
}
void Traverse(LinkList L){
Lnode *p=L;
while(p->next!=NULL){
p=p->next;
printf("%d",p->data);
}
}
//void DeleteSameNum(LinkList &L,int e){ //Á½¸öÖ¸Õë
// Lnode *p=L;
// Lnode *q=L;
// while(p->next!=NULL){
// q=p;
// if(p->next->data==e){
// q=p->next;
// p->next=q->next;
// free(q);
// }
// else{
// p=p->next;
// }
// }
//}
void DeleteSameNum(LinkList &L,int e){ //Èý¸öÖ¸Õë
Lnode *p=L->next;
Lnode *pre=L;
Lnode *q;
while(p!=NULL){
if(p->data==e){
q=p;
p=p->next;
pre->next=p;
free(q);
}
else{
pre=p;
p=p->next;
}
}
}
void apart(LinkList &L,LinkList &L1,LinkList &L2){
L1=L;
L2=(Lnode *)malloc(sizeof(Lnode)); //Í·²å·¨
L2->next=NULL;
Lnode *p,*q,*r;
p=L->next;
r=L1;
while(p!=NULL){
r->next=p;
r=p;
p=p->next;
q=p->next;
p->next=L2->next;
L2->next=p;
p=q;
}
r->next=NULL;
}
void deleteBdata(LinkList &L){
int i;
Lnode *p,*q,*s;
p=L;
i=p->next->data;
while(p->next!=NULL){
if(p->next->data>i){
i=p->next->data;
q=p;
s=q->next;
}
p=p->next;
}
q->next=s->next;
i=s->data;
free(s);
printf("%d",i);
}
void increaseSort(LinkList &L){
Lnode *p,*q,*pre;
p=L->next->next;
L->next->next=NULL;
while(p!=NULL){
q=p->next;
pre=L;
while(pre->next!=NULL&&pre->next->data<p->data)
pre=pre->next;
p->next=pre->next;
pre->next=p;
p=q;
}
}
int main(){
LinkList L;
InitList(L);
LastInsert(L);
// HeadInsert(L);
increaseSort(L);
Traverse(L);
}
C语言 数据结构单链表 实例
最新推荐文章于 2024-07-22 20:42:27 发布