单链表--头插法创建方式

单链表–头插法创建方式

/*****************************************************
 * 对于单链表的练习
 * Description: 利用头插法建立具有头节点的单链表,并对其进行基本的操作
 * Author:qichaoqun
 * Date:2019/07/11
 *****************************************************/
#include "stdio.h"
#include "stdlib.h"

/*定义单链表中的结点的结构体*/
typedef struct LNode {
    //数值域
    int data;
    //指针域(指向下一个结点)
    struct LNode *next;
} LNode, *LinkList;

/*显示菜单*/
void showMenu();

/*头插法建立单链表
 * 该单链表带头结点
 * */
bool createLinkListByHead(LinkList &linkList);

/*输出单链表*/
void showLinkList(LinkList &linkList);

/*在指定的位置插入一个元素*/
bool insertElementByPosition(LinkList &linkList, int position, int element);

//遍历单链表的长度
int calculateLength(LinkList &linkList);

/*根据位置来显示元素*/
int getElementByPosition(LinkList &linkList, int position);

/*按元素的值来进行元素的查找*/
bool getElementByValue(LinkList &linkList,int value);

/*逆序输出单链表中的元素*/
void showElementByNormalOrder(LinkList &linkList);

/*根据位置修改元素的值*/
bool updateValeByPosition(LinkList &linkList,int position,int value);

/*根据元素的值删除一个结点*/
bool deleteNodeByValue(LinkList &linkList,int value);

/*删除所有的偶数的结点*/
void deleteEventNode(LinkList &linkList);

int main() {
    //用于判断是否退出的标志
    bool isExit = false;
    //定义单链表的头节点
    LinkList linkList;
    //初始化头节点
    linkList = (LinkList) malloc(sizeof(LNode));
    //使用头结点的数值域来存放单链表的长度
    linkList->data = 0;
    //将头结点的指针域置为空
    linkList->next = nullptr;

    while (!isExit) {
        showMenu();
        int option;
        scanf("%d", &option);
        switch (option) {
            case 1:
                //头插法建立单链表
                if (createLinkListByHead(linkList)) {
                    printf("创建成功\n");
                }
                break;
            case 2:
                //在指定位置插入一个元素
                printf("请输入插入的位置和插入的元素的值 ");
                int position;
                int element;
                scanf("%d", &position);
                scanf("%d", &element);
                if (insertElementByPosition(linkList, position, element)) {
                    printf("插入成功\n");
                } else {
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值