首页IT科技单链表头插法和尾插法代码(9-数据结构-单链表头插法尾插法)

单链表头插法和尾插法代码(9-数据结构-单链表头插法尾插法)

时间2025-09-16 04:44:46分类IT科技浏览5717
导读:问题:...

问题:

单链表头插法与尾插法

思路:

头插法                ,类似于前面的在末位置前                         ,插入元素                 。最后创建完为逆序; 尾插法        ,则是定一个尾指针r                ,每次接入新的结点s                         ,随后r=s(即r往后移位)

详解:

头插法:

先初始化链表l——l=(linklist)malloc(sizeof(lnode));  l->next=NULL; 定义一个暂存结点用来一直插入元素        ,接进链中                        。——lnode*s        。 随后定义插入数据x 进入循环        ,当输入x=9999时                         ,循环结束 初始化s 随后进行后插操作                 ,s->data=x;s->next=l->next;l->next=s; 之后再输入x 这样创建的链表就是逆序的链表了        ,可以1用来做逆序题目;

尾插法:

先初始化链表l——l=(linklist)malloc(sizeof(lnode));  l->next=NULL; 定义一个暂存结点用来一直插入元素                        ,接进链中         。——lnode*s                        。 定义一个尾指针r                 ,用来表示链表的尾部 让尾指针r=l,就算真正接进l链表中了                。 随后一样的操作输入x,进入循环 循环中                        ,初始化s 给s数据域赋值——s->data=x; 让尾指针r指向s                         ,连接起来——r->next=s; 随后移动r尾指针的位置到s结点中——r=s;达到位移目的         。

代码如下:

头插法:

linklist tcreatlist(linklist &l,int &len) { l=(linklist)malloc(sizeof(lnode)); l->next=NULL; lnode *s; int x; printf("请输入所需添加的数据,输入9999结束输入\n"); scanf("%d",&x); while(x!=9999) { len++; s=(lnode*)malloc(sizeof(lnode)); s->data=x; s->next=l->next; l->next=s; scanf("%d",&x); } return l; }

尾插法:

linklist wcreatlist(linklist &l,int &len)//尾插法 { l=(linklist)malloc(sizeof(lnode)); l->next=NULL; lnode *s; lnode *r=l; int x; printf("请输入所需添加的数据\n"); scanf("%d",&x); while(x!=9999) { len++;//计算链表长度 s=(lnode*)malloc(sizeof(lnode)); s->data=x; r->next=s; r=s; scanf("%d",&x); } r->next=NULL; return l; }

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
尚好精选酒店(学习笔记——尚好房项目(配置ssm环境、测试ssm环境)) linux查看网卡网速(linux中查看网卡流量六种方法)