单链表–头插法创建方式
/*****************************************************
* 对于单链表的练习
* 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 {