【C语言/数据结构】单链表的基本操作

一.程序可实现

初始化
头插法建立
尾插法建立
清空
判空
销毁
输出
查找(按数值/位置)
插入(按数值/位置进行前/后插)
删除(按数值/位置)
求链表长度

ps:“按数值”默认操作对象是指顺序表中第一个同值的元素。

二.积累知识点/查找的有关资料

1.编译器报错:
(1)ios常见错误——thread 1 breakpoint 1.1.
(2)linker command failed with exit code 1 (use -v to see invocation).
2.(重要)对头指针&头节点的理解:
(1)关于链表中头指针和头结点的理解.
(2)头指针与头结点的异同.

三.完整代码如下:

注意!!!我使用的编译器为Xcode,程序直接放在Dev c++等编译器下运行的时候,中文注释可能会出现乱码类的显示错误。

//头文件
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
//函数结果状态码
#define TRUE     1
#define FALSE    0
#define OK       1
#define ERROR    0
#define INFEASIBLE  -1
#define OVERFLOW    -2
typedef int Status;   //此处定义Status等价于int
typedef int ElemType; //此处定义ElemType等价于int
//单链表的存储结构
typedef struct LNode{
   
    ElemType data;
    struct LNode *next;
} LNode,*LinkList;     //假设L是LinkList型的变量,则L为单链表的头指针
 //函数声明(16):
 void InitLinkList(LinkList &L);                                     //初始化
 void CreateLinkList_head(LinkList &L);                              //头插法建立
 void CreateLinkList_title(LinkList &L);                             //尾插法建立
 void ClearLinkList(LinkList &L);                                    //清空
 void IsEmpty(LinkList &L);                                          //判空
 void DestroyList(LinkList &L);                                      //销毁
 void ListTraverse(LinkList &L);                                     //输出
 Status LocateElem(LinkList &L,ElemType e);                          //按数值查找
 Status GetElem(LinkList &L,int i,ElemType &e);                      //按位置查找
 Status LinkInsert_before_num(LinkList L,ElemType e,ElemType new_e); //按数值前插
 Status LinkInsert_after_num(LinkList L,ElemType e,ElemType new_e);  //按数值后插
 Status LinkInsert_before_place(LinkList L,int i,ElemType new_e);    //按位置前插
 Status LinkInsert_after_place(LinkList L,int i,ElemType new_e);     //按位置后插
 Status ListDelet_num(LinkList &L,int e);                            //按数值删除
 Status ListDelet_place(LinkList &L,int i,ElemType &e);              //按位置删除
 Status ListLength(LinkList L);                                      //单链表长度

//主函数:
int main()
{
   
    LinkList L;      //头指针
    int a,i;
    ElemType e,new_e;
    InitLinkList(L);
    while(1)
    {
   
        printf("\n请输入对应数字操作菜单(0〜13):\n");
        printf("1.头插法创建(与输入逆序)\n");
        printf("2.尾插法创建(与输入同序)\n");
        printf("3.清空\n");
        printf("4.判空\n");
        printf("5.销毁\n");
        printf("6.输出\n");
        printf("7.按数值查找,并返回第一个同值元素所在位置\n");
        printf("8.按位置查找,并返回该位置的元素数值\n");
        printf("9.按数值前插(每次的操作对象都是本次查找都第一个同值元素)\n");
        printf("10.按数值后插(每次的操作对象都是本次查找都第一个同值元素)\n");
        printf("11.按数值删除(每次的操作对象都是本次查找都第一个同值元素)\n");
        printf("12.按位置前插(每次的操作对象都是本次查找都第一个同值元素)\n");
        printf("13.按位置后插(每次的操作对象都是本次查找都第一个同值元素)\n");
        printf(
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值