输出一个有序单链表

一、单链表
单链表,就是线性表的链式存储结构,又称线性链表。
它的特点是:用一组任意的存储单元存储线性表的数据元素,即结点之间在逻辑上是连续的,在物理上是不连续的。
单链表是带有头结点的,头节点只起到“哨兵”的作用,它的数据域是不使用的,指针域指向第一个数据域的位置。

以下代码是单链表各个结点的逻辑表示:data是节点的数据域,next是指针域——存储下一个结点的地址。

struct list //定义结构类型
{
int data;
list * next;
};

Void *insert(list *&head,int num) //建立链表函数返回头指针
{
list * s, *p, *q; //声明局部变量
s = new list; //生成新节点
s->data = NULL;
s->next = NULL;
if (head == NULL) //判断头指针为空向链表插入新节点
{
head = s;
return head;
}
if (head ->data > s->data) //建立第一个节点
{
s->next = head;
head = s;
return head;
}
for (q = head, p = head->next; p;q= p,p = p->next) //搜索插入 :开始搜索 -》 q = head, p = head->next 搜索条件 -》 p 跟踪指针移动-》 q= p,p = p->next
{
if (p->data > s->data) //找到位置插入
{
s->next = p;
q->next = s;
return head;
}
}
q->next = s; //插入表尾
return head;

}

//输出链表节点
void showlist(const list * head) //形参指针const list * head
{
cout << "now the items of list are :\n ";
while(head)
{
cout << head->data << ‘\t’;
head = head->next;
}
cout << endl;
}

void main()
{
list * head; //声明头指针
int k;
head = NULL; //初始化头结点
cin >> k;
while (k != 0) //判断输入数不为零
{
head = insert(head,k); //头结点插入
cin >> k;
}
showlist(head); //输出链表

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值