模拟链表
来源:互联网 发布:秦美人盾牌进阶数据 编辑:程序博客网 时间:2024/06/15 09:11
如果指针不精通,也可以通过两个数组来模拟链表
通过两个数组实现链表:
数组1:data[],用来存储数据,就是链表结点的数据域。
数组2:right[],用来存储数据的下一个数据的位置,就是链表结点的指针域(next指针)。
模拟链表的建立:
#include<stdio.h>int main(int argc,char *argv[]){ int data[101],right[101]; int n,head=1,end=0,i; scanf("%d",&n); for(i=1;i<=n;++i) scanf("%d",data+i); for(i=1;i<=n;++i) { if(i!=n) right[i]=i+1; else right[i]=end; } i=head; while(i!=end) { printf("%-3d",data[i]); i=right[i]; } return 0;}
模拟链表的插入数据:
#include<stdio.h>#include<stdlib.h>#include<assert.h>int main(int argc,char *argv[]){ int data[101],right[101]; int n,i,begin=1,end=0,next; scanf("%d",&n); assert(n>0); /*建立模拟链表*/ for(i=begin;i<=n;++i) scanf("%d",&data[i]); next=n; for(i=begin;i<=n;++i) { if(i!=n) right[i]=i+1; else right[i]=end; } next++; /*在模拟链表中伪插入数据*/ scanf("%d",&data[next]); int t=begin; while(t!=end) { if(data[right[t]]>data[next]) { right[next]=right[t]; right[t]=next; break; } t=right[t]; } /*输出模拟链表*/ t=begin; while(t!=0) { printf("%-3d",data[t]); t=right[t]; } return 0;}
0 0
- 模拟链表
- java模拟链表
- 链表简单模拟
- 模拟链表
- 模拟链表
- 模拟链表
- 模拟链表
- 数组模拟链表
- 2.5模拟链表
- 模拟循环链表
- 模拟链表
- 模拟链表
- Python 模拟链表
- python 模拟链表
- 数组模拟链表
- java模拟---遍历链表
- 用数组模拟链表
- 链表模拟加法问题
- laravel5.0在linux环境下解决.htaccess无效和去除index.php
- SSL 验证过程
- java设计模式之一工厂模式(Factory Method)
- 指向学生的指针
- hasOwnProperty()
- 模拟链表
- 一尺、一英尺、一寸和一英寸分别等于多少厘米?
- CSS vs JS动画:谁更快?
- Combination Sum II 找出Sum符合要求的组合系列2
- 四、流插入(右移)和流提取(左移)运算符重载
- 10044--- JDK8与JDK7并存时切换的问题
- CI/CD 持续集成和持续交付 (一)
- 使用adb命令对手机进行截屏保存到电脑,SDCard
- Bootstrap下拉菜单插件