链表的相关操纵作业:
1】 按值修改
2】按值查找,返回当前节点的地址 (先不考虑重复,假如有重复,返回第一个)
3】 逆置(反转)
4】释放链表
main.c
- #include "head.h"
- int main(int argc, const char *argv[])
- {
- //创建链表,头结点
- linklist_ptr p=create();
- //判断链表是否为空
- empty(p);
- //头插
- insert_head(p,10);
- insert_head(p,11);
- insert_head(p,12);
- //输出
- output(p);
- //尾插
- insert_tail(p,1);
- insert_tail(p,2);
- insert_tail(p,3);
- output(p);
- //任意位置插入
- insert_index(p,2,99);
- output(p);
- //头删
- del_head(p);
- output(p);
- //尾删除
- del_tail(p);
- output(p);
- //任意位置删除
- del_index(p,2);
- output(p);
- //按照所给位数修改值
- change_element(p,1,99);
- output(p);
- //按照所给的值查找
- find_element(p,1);
- output(p);
- //反转
- reversal(p);
- output(p);
- return 0;
- }
复制代码 head.h
- #include <stdio.h>
- #include <stdlib.h>
- //定义节点数据的类型
- typedef int datatype;
- //定义链表结构体
- typedef struct node
- {
- union
- {
- //表示节点的个数
- int len;
- //节点的数据
- datatype data;
- };
- //指针域
- struct node *next;
- }linklist,*linklist_ptr;
-
-
- //1.链表的创建
- linklist_ptr create();
- //2.判断链表是否为空
- int empty(linklist_ptr p);
- //3.申请节点封装数据
- linklist_ptr node_create(datatype e);
- //4.头插
- int insert_head(linklist_ptr p,datatype e);
- //5.输出
- void output(linklist_ptr p);
- //6.尾插
- int insert_tail(linklist_ptr p,datatype e);
- //7.任意位置插入
- int insert_index(linklist_ptr p,int index,datatype e);
- //8.头删
- int del_head(linklist_ptr p);
- //9.尾删除
- int del_tail(linklist_ptr p);
- //10.任意位置删除
- int del_index(linklist_ptr p,int index);
- //11.按照所给的值修改
- int change_element(linklist_ptr p,int index,datatype e);
- //12.按照所给的值查找
- linklist_ptr find_element(linklist_ptr p,datatype e);
- //13.反转
- int reversal(linklist_ptr p);
- #endif
复制代码 fun.c

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |