当前位置: 首页 > news >正文

企业网站新模式安新seo优化排名网站

企业网站新模式,安新seo优化排名网站,免费设计装修公司网站,宁波网站制作线性表-链式存储-单链表 代码实现 代码实现 #include<stdio.h> #include<stdlib.h> #include<stdbool.h>//定义元素数据类型 #define ElemType int//定义结点结构体 typedef struct LNode {//数据域&#xff0c;说白了就是存放当前节点的数据的。ElemType d…

线性表-链式存储-单链表

  • 代码实现


代码实现

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>//定义元素数据类型
#define ElemType int//定义结点结构体
typedef struct LNode {//数据域,说白了就是存放当前节点的数据的。ElemType data;//指针域,就是存放这个节点指向的下一个节点的地址struct LNode *next;
} LNode, *LinkList;   //LinkList就是LNode的代指//函数声明
bool Empty(LinkList L);//初始化链表
void InitList(LinkList *L) {//给链表的开头的结点分配一个LNode结构体大小的内存空间*L = (LinkList) malloc(sizeof(LNode));//将后继结点设置为NULL,也就是现在只有这一个节点(*L)->next = NULL;
}//头插法建立单链表
LinkList ListInsert_Head(LinkList *L) {InitList(L);ElemType Elem;printf("请输入要插入的元素数据(输入0结束):");scanf("%d", &Elem);while (Elem != 0) {//建立一个新的节点LinkList newNode = (LinkList) malloc(sizeof(LNode));newNode->data = Elem;newNode->next = (*L)->next;(*L)->next = newNode;scanf("%d", &Elem);}return *L;
}//尾插法建立单链表
LinkList ListInsert_Tail(LinkList *L) {InitList(L);ElemType Elem;LNode *p,*r = (*L);printf("请输入要插入的元素(输入0结束):");scanf("%d", &Elem);while (Elem != 0) {p = (LinkList) malloc(sizeof(LNode));p->data = Elem;p->next = NULL;r->next = p;r = p;scanf("%d", &Elem);}return *L;
}//求单链表表长
int Length(LinkList L) {//新建一个移动结点,负责遍历链表,因为有头结点,所以移动结点从头结点的下一个结点算起LNode *p = L->next;//定义int变量,用于统计链表长度int num = 0;while (p != NULL) {num++;p = p->next;}return num;
}//按值查找操作
//int LocateElem(LinkList L, ElemType Elem) {
//    //定义移动指针,指向头结点的下一个位置
//    LNode *p = L->next;
//
//    //定义当前索引,初始值为1,因为头结点为0
//    int index = 1;
//
//    //如果当前节点数据不为要寻找的那个值,就继续循环
//    while (p != NULL && p->data != Elem) {
//        index++;
//        p = p->next;
//    }
//    if (p == NULL) {
//        return -1;
//    }
//    return index;
//}
/*------------------------上面写了个返回位置,其实应该返回结点----------------------------*///按值查找操作(返回结点)
LNode *LocateElem(LinkList L, ElemType Elem) {LNode *p = L->next;while (p != NULL && p->data != Elem) {p = p->next;}return p;
}//按位查找操作(返回结点)
LNode *GetElem(LinkList L, int index) {LNode *p = L->next;if (index > Length(L)) {printf("索引超出链表长度!\n");return NULL;}//为什么要大于1呢,因为0是头结点。while (index > 1) {p = p->next;index--;}return p;
}//插入操作
void ListInsert(LinkList *L, int index, ElemType Elem) {if (index > Length(*L)) {printf("索引超出链表长度!\n");return;}//建立临时移动结点LNode *p = (*L);//建立新节点LinkList new;InitList(&new);new->data = Elem;//先找到index位置的上一个节点while (index > 1) {p = p->next;index--;}//把插入位置的上一个节点的下一个节点赋值给新节点new->next = p->next;p->next = new;
}//删除操作
void ListDelete(LinkList *L, int index) {if (index > Length(*L)) {printf("索引超出链表长度!\n");return;}//其实前面有索引判断了,这个判空好像没用if (Empty(*L)) {printf("删除失败,链表为空!\n");return;}LNode *p = (*L);//找到删除位置的上一个节点while (index > 1) {p = p->next;index--;}p->next = p->next->next;
}//判空函数
bool Empty(LinkList L) {if (L == NULL || L->next == NULL) {return true;}return false;
}//销毁单链表
void DestroyList(LinkList *L) {//定义移动结点LNode *p = (*L);while (p != NULL) {//定义一个地址信息保存pLNode *temp = p;p = p->next;free(temp);}//将头结点设置为空*L = NULL;}//打印链表数据
void PrintList(LinkList L) {if (Empty(L)) {printf("链表为空!\n");return;}//新建一个LNode结点结构体p,并将链头结点的后继设置为这个结点的后继LNode *p = L->next;printf("链表中的元素为:");//当下一个结点不为空的时候,一直打印while (p != NULL) {printf("%d ", p->data);p = p->next;}printf("\n");
}int main() {//定义头结点LinkList head;//定义元素值ElemType Elem;//定义索引int index;//头插法建立链表
//    head = ListInsert_Head(&head);//尾插法建立链表head = ListInsert_Tail(&head);//打印链表PrintList(head);//输出链表长度printf("链表长度为:%d\n", Length(head));//查找指定元素值的对应值(搁这搁这呢)printf("请输入要查找的元素的值:");scanf("%d", &Elem);printf("值为%d的元素的值为%d\n", Elem, LocateElem(head, Elem)->data);//查找指定位置的对应值printf("请输入要查找的元素的位置:");scanf("%d", &index);printf("位置为%d的元素的值为%d\n", index, GetElem(head, index)->data);//插入元素printf("请输入要插入的元素的位置:");scanf("%d", &index);printf("请输入要插入的元素的值:");scanf("%d", &Elem);ListInsert(&head, index, Elem);printf("插入元素后的链表:\n");PrintList(head);//删除元素printf("请输入要删除的元素的位置:");scanf("%d", &index);ListDelete(&head, index);printf("删除元素后的链表:\n");PrintList(head);//销毁链表DestroyList(&head);printf("销毁后的链表:\n");PrintList(head);
}
http://www.mmbaike.com/news/39093.html

相关文章:

  • wordpress导航页面设置密码济南百度seo
  • 网站优化和提升网站排名怎么做电子商务营销策划方案
  • 内蒙古工程建设协会官方网站优化seo软件
  • 河北唐山 网站建设新手小白怎么学做运营
  • 如何在网站上做抽奖系统企业品牌推广网站
  • 怎么做水果网站推广的十种方式
  • 网站建设成本计划郑州做网络营销渠道
  • 网站通用样式网站推广公司推荐
  • 专做女鞋的网站如何进行seo搜索引擎优化
  • 网站后台统计新东方考研班收费价格表
  • 网站建设和技术支持推广宣传方式有哪些
  • 网站服务器ip更换链接交换公司
  • 网站开发使用api对seo营销型网站建设步骤
  • 百度网站建设怎么联系怎样做百度推广
  • 眉山做网站百度竞价推广的优势
  • 长春优惠做网站上海站优云网络科技有限公司
  • 分局网站建设百度客户服务电话
  • 网站你懂我意思正能量晚上不用下载app推广策划方案
  • 在线做图表的网站百度app安卓版下载
  • 文档里链接网站地址怎么做抚顺网站建设
  • 广州建外贸网站常见的系统优化软件
  • seo优化软件哪个最好用上海seo优化公司kinglink
  • 北京知名的网站建设公司专门的网页制作工具有
  • 24小时自助下单平台网站便宜怎样搭建一个网站
  • 用dw制作网站模板竞价排名采用什么计费方式
  • 网站的内容策略seo 工具
  • 哪个网站是用php写的sem竞价推广公司
  • 二手网站信用体系建设如何引流与推广
  • 佛山高端网站设计厦门seo大佬
  • 做淘宝优惠券推广网站数据分析培训机构哪家好