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

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

时间2025-05-01 12:39:38分类IT科技浏览3417
导读:问题:...

问题:

单链表头插法与尾插法

思路:

头插法           ,类似于前面的在末位置前                 ,插入元素           。最后创建完为逆序; 尾插法     ,则是定一个尾指针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
巩义网站优化公司(巩义市seo营销) SEO优化基础知识(了解SEO优化的关键术语及操作技巧)