#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
void TypeinElem(LinkList &L){
int x;
L=(LinkList)malloc(sizeof(LNode));
LNode *s,*r=L;
scanf("%d",&x);
while(x!=9){
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
}
void Lineup(LinkList &L){ //排序 ,带头结点
LNode *f,*p,*r; //f为新表指针,用来遍历新表元素,p为原表指针,r为p的后驱节点
p=L->next;
r=p->next;
p->next=NULL;
p=r;
while(p!=NULL){
r=p->next;
f=L; //注意f=L需要在外循环中,不然就不能每次都遍历全部新链表
while(f->next!=NULL && f->next->data < p->data){
f=f->next;
}
p->next=f->next;
f->next=p;
p=r;
}
}
void PrintList(LinkList &L){
printf("现在该链表为:");
LNode *s=L->next;
while(s){
printf("%d",s->data);
s=s->next;
}
printf("\n");
}
int main(){
LinkList L;
TypeinElem(L);
PrintList(L);
Lineup(L);
PrintList(L);
}
王道数据结构P40.06
最新推荐文章于 2024-07-22 20:42:52 发布
该程序定义了一个链表结构,通过用户输入创建链表,然后使用插入排序方法对链表进行排序。主要涉及链表节点定义、动态内存分配以及链表操作。
摘要由CSDN通过智能技术生成