模拟链表

在《啊哈!算法》中看到的,在这里做个笔记

在第一次while循环中注意是data [ right [ t ] ]

 在打印过程中可以这样理解:

t12310456789
data[t]23568910182632
t=right(t)23104567890
#include <stdio.h>

int main(int argc, char *argv[])
{
	int data[101],right[101];
	int i,n,t,len;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		scanf("%d",&data[i]);
	}
	len=n;
	//初始化数组right
	for(i=1;i<=n;i++){
		if(i!=0)
			right[i]=i+1;
		else
			right[i]=0;
	}
	//直接在数组data加入一个数
	len++;
	scanf("%d",&data[len]);
	//从链表的头部开始遍历
	t=1;
	while(t!=0){
		if(data[right[t]] > data[len])//如果当前结点的下一结点的值大于带插入数,将数插到中间
		{
			right[len]=right[t];//新插入数的下一个结点标号等于当前结点的下一个结点编号
			right[t]=len;//当前结点的下一个结点编号就是新插入数的编号
			break;
		}
		t=right[t];
	}
	//输出链表所有的数
	t=1;
	while(t!=0){
		printf("%d",data[t]);
		t=right[t];
	}
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值