//有序单链表
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Node
{
int data;
struct Node *next;
};
//顺序插入
void Insert(Node *p,int n)
{
//利用两个指针
Node *p1=p;//指向头 ,因为这是有序单链表 所以每次插入前都得先从头来
Node *p2=p->next; //指向头节点之后 之后也用它来判断是否位只含有头节点的空链表
Node *s=(Node *)malloc(sizeof(Node));
s->data=n;//写入数据
while(p2&&p2->data>n)
{
p1=p2;
p2=p2->next;//这样同时往后移的话 插入的时候好插入
}
s->next=p2;
p1->next=s;//插入节点
}
//遍历列表
void traversal(Node *p)
{
Node *p3=p->next;//不能从p开始遍历因为p是头节点没存东西
while(p3)
{
printf("%d\n",p3->data);
p3=p3->next;
}
}
int main()
{
Node *p;
int i,j,k;
p=(Node *)malloc(sizeof(Node));
p->next=NULL;//创建头节点
for(i=0;i<3;i++)
{
printf("Please input the number you want to insert");
scanf("%d",&k);
Insert(p,k);
}
traversal(p);
return 0;
}
创建一个有序单链表(数据结构)
最新推荐文章于 2024-10-02 00:05:48 发布