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

帝国cms对比WordPress搜索引擎优化培训免费咨询

帝国cms对比WordPress,搜索引擎优化培训免费咨询,排名好的徐州网站建设,怎么做网站的seo要求功能: 创建学生信息表 头插法输入学生信息 尾插法输入学生信息输出任意位置范围内的学生信息 头删法删除学生信息尾删法删除学生信息按位置添加学生信息按位置删除学生信息 按位置修改学生信息按位置查找学生信息释放空间 今天有点累,懒得写注释了&a…

要求功能:

  1. 创建学生信息表 
  2. 头插法输入学生信息 
  3. 尾插法输入学生信息
  4. 输出任意位置范围内的学生信息 
  5. 头删法删除学生信息
  6. 尾删法删除学生信息
  7. 按位置添加学生信息
  8. 按位置删除学生信息 
  9. 按位置修改学生信息
  10. 按位置查找学生信息
  11. 释放空间

今天有点累,懒得写注释了,其实思路都差不多,就是找到在操作,没什么太多区别 

创建结构体

节点结构体
        len:链表长度
        data:节点数据
        next:节点后继

typedef struct Node {union {int data;int len;};struct Node* next;
} Node, *PNode;

 

创建链表

PNode linklist_creat() {PNode p = (PNode) malloc(sizeof(Node));if(NULL == p){printf("创建失败!\n");return NULL;}p->len = 0;p->next = NULL;printf("创建成功!\n");return p;
}

头插法输入学生信息

int linklist_head_insert(PNode linklist, int num) {if(NULL == linklist) return -1;printf("请输入 %d 个数据:\n",num);for (int i = 0; i < num; ++i) {PNode temp = (PNode) malloc(sizeof(Node));scanf("%d",&temp->data);//头插temp->next = linklist->next;linklist->next = temp;//改变长度记录linklist->len++;}printf("头插 %d 个元素成功!\n",num);return 1;
}

尾插法输入学生信息

int linklist_tail_insert(PNode linklist, int num) {if(NULL == linklist) return -1;printf("请输入 %d 个数据:\n",num);PNode p = linklist;while (p->next != NULL){p = p->next;}for (int i = 0; i < num; ++i) {PNode temp = (PNode) malloc(sizeof(Node));scanf("%d",&temp->data);temp->next = NULL;p->next = temp;p = p->next;linklist->len++;}printf("尾插 %d 个元素成功!\n",num);return 1;
}

输出任意位置范围内的学生信息

int linklist_output(PNode linklist, int out_begin, int out_end) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}if(out_begin > out_end){printf("输入顺序出错!\n");return 0;}if(out_begin < 1 || out_end > linklist->len){printf("输入不在链表范围内");return 0;}PNode temp = linklist->next;int count = 1;while (count < out_begin){temp = temp->next;count++;}for (int i = out_begin; i <= out_end; ++i) {printf("%d ",temp->data);temp = temp->next;}printf("\n");printf("输出 %d 到 %d 个元素完成!\n",out_begin,out_end);return 1;
}

头删法删除学生信息

int linklist_head_delete(PNode linklist, int num) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}if(num > linklist->len){printf("输入长度超过链表长度!\n");return 0;}for (int i = 0; i < num; ++i) {//创建删除指针PNode temp = linklist->next;//断开链接linklist->next = temp->next;//释放删除节点temp->next = NULL;free(temp);temp = NULL;linklist->len--;}printf("头删 %d 个元素完成!\n",num);return 1;
}

尾删法删除学生信息

int linklist_tail_delete(PNode linklist, int num) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}if(num > linklist->len || num < 1){printf("输入长度超过链表长度!\n");return 0;}for (int i = 0; i < num; ++i) {PNode temp = linklist;while (temp->next->next != NULL){temp = temp->next;}free(temp->next);temp->next = NULL;linklist->len--;}printf("尾删 %d 个数据成功!\n",num);return 1;
}

按位置插入学生信息

int linklist_set_insert(PNode linklist, int set) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}if(set > linklist->len + 1 || set < 1){printf("输入长度超过链表长度!\n");return 0;}//找到set位置前面那个位置PNode temp = linklist;int count = 0;while (count < set){temp = temp->next;count++;}PNode new_node = (PNode) malloc(sizeof(Node));printf("请输入要插入的值:");scanf("%d",&new_node->data);new_node->next = temp->next;temp->next = new_node;linklist->len++;printf("插入新数据到 %d 位置成功\n",set);return 1;
}

按位置删除学生信息

int linklist_set_delete(PNode linklist, int set) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}if(set > linklist->len || set < 1){printf("输入长度超过链表长度!\n");return 0;}//找到set位置前面那个位置PNode temp = linklist;int count = 1;while (count < set){temp = temp->next;count++;}PNode p = temp->next;temp->next = p->next;free(p);linklist->len--;printf("删除 %d 位置的数据成功\n",set);return 1;
}

按位置修改学生信息

int linklist_set_change(PNode linklist, int set) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}if(set > linklist->len || set < 1){printf("输入长度超过链表长度!\n");return 0;}//找到set位置PNode temp = linklist->next;int count = 1;while (count < set){temp = temp->next;count++;}printf("当前值为: %d\n",temp->data);printf("请输入要修改的值:");scanf("%d",&temp->data);printf("修改成功!\n");return 1;
}

按位置查找学生信息

释放空间

int linklist_free(PNode linklist) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}while (linklist->next != NULL){PNode p = linklist->next;linklist->next = p->next;p->next = NULL;free(p);p = NULL;}printf("释放成功!\n");return 1;
}

代码总和

#include <stdio.h>
#include <malloc.h>//节点结构体,len:链表长度,data:节点数据,next:节点后继
typedef struct Node {union {int data;int len;};struct Node* next;
} Node, *PNode;PNode linklist_creat();int linklist_free(PNode linklist);int linklist_head_insert(PNode linklist, int num);int linklist_tail_insert(PNode linklist, int num);int linklist_output(PNode linklist, int out_begin, int out_end);int linklist_head_delete(PNode linklist, int num);int linklist_tail_delete(PNode linklist, int num);int linklist_set_insert(PNode linklist, int set);int linklist_set_delete(PNode linklist, int set);int linklist_set_change(PNode linklist, int set);int linklist_set_find(PNode linklist, int set);int main(){PNode linklist;int chose;for (;;) {printf("请输入你的选择:");scanf("%d",&chose);if(chose == 0){printf("当前链表长度为:%-5d\n",linklist->len);} else if(chose == 1){//创建头节点linklist = linklist_creat();} else if(chose == 2){//头插int num;printf("请输入要头插节点的数量:");scanf("%d",&num);linklist_head_insert(linklist,num);} else if(chose == 3){//尾插int num;printf("请输入要尾插节点的数量:");scanf("%d",&num);linklist_tail_insert(linklist,num);} else if(chose == 4){//遍历链表int out_begin,out_end;printf("当前链表长度为:%-3d\n",linklist->len);printf("请输入要遍历的起始位置和结束位置:");scanf("%d %d",&out_begin,&out_end);linklist_output(linklist,out_begin,out_end);} else if(chose == 5){//头删int num;printf("请输入要头删的数量:");scanf("%d",&num);linklist_head_delete(linklist,num);} else if(chose == 6){//尾删int num;printf("请输入要尾删的数量:");scanf("%d",&num);linklist_tail_delete(linklist,num);}if(chose == 7){//任意位置插入int set;printf("请输入要插入的位置:");scanf("%d",&set);linklist_set_insert(linklist,set);}if(chose == 8){//任意位置删除int set;printf("请输入要删除的位置:");scanf("%d",&set);linklist_set_delete(linklist,set);}if(chose == 9){//任意位置修改int set;printf("请输入要修改的位置:");scanf("%d",&set);linklist_set_change(linklist,set);}if(chose == 10){//任意位置查找int set;printf("请输入要查找的位置:");scanf("%d",&set);linklist_set_find(linklist,set);}else if(chose == -1){//释放内存,指针指空linklist_free(linklist);free(linklist);linklist = NULL;break;}printf("\n");}return 0;
}int linklist_set_find(PNode linklist, int set) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}if(set > linklist->len || set < 1){printf("输入长度超过链表长度!\n");return 0;}//找到set位置PNode temp = linklist->next;int count = 1;while (count < set){temp = temp->next;count++;}printf("第 %d 个数据为 %d\n",set,temp->data);return 1;
}int linklist_set_change(PNode linklist, int set) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}if(set > linklist->len || set < 1){printf("输入长度超过链表长度!\n");return 0;}//找到set位置PNode temp = linklist->next;int count = 1;while (count < set){temp = temp->next;count++;}printf("当前值为: %d\n",temp->data);printf("请输入要修改的值:");scanf("%d",&temp->data);printf("修改成功!\n");return 1;
}int linklist_set_delete(PNode linklist, int set) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}if(set > linklist->len || set < 1){printf("输入长度超过链表长度!\n");return 0;}//找到set位置前面那个位置PNode temp = linklist;int count = 1;while (count < set){temp = temp->next;count++;}PNode p = temp->next;temp->next = p->next;free(p);linklist->len--;printf("删除 %d 位置的数据成功\n",set);return 1;
}int linklist_set_insert(PNode linklist, int set) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}if(set > linklist->len + 1 || set < 1){printf("输入长度超过链表长度!\n");return 0;}//找到set位置前面那个位置PNode temp = linklist;int count = 0;while (count < set){temp = temp->next;count++;}PNode new_node = (PNode) malloc(sizeof(Node));printf("请输入要插入的值:");scanf("%d",&new_node->data);new_node->next = temp->next;temp->next = new_node;linklist->len++;printf("插入新数据到 %d 位置成功\n",set);return 1;
}int linklist_tail_delete(PNode linklist, int num) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}if(num > linklist->len || num < 1){printf("输入长度超过链表长度!\n");return 0;}for (int i = 0; i < num; ++i) {PNode temp = linklist;while (temp->next->next != NULL){temp = temp->next;}free(temp->next);temp->next = NULL;linklist->len--;}printf("尾删 %d 个数据成功!\n",num);return 1;
}int linklist_head_delete(PNode linklist, int num) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}if(num > linklist->len){printf("输入长度超过链表长度!\n");return 0;}for (int i = 0; i < num; ++i) {//创建删除指针PNode temp = linklist->next;//断开链接linklist->next = temp->next;//释放删除节点temp->next = NULL;free(temp);temp = NULL;linklist->len--;}printf("头删 %d 个元素完成!\n",num);return 1;
}int linklist_output(PNode linklist, int out_begin, int out_end) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}if(out_begin > out_end){printf("输入顺序出错!\n");return 0;}if(out_begin < 1 || out_end > linklist->len){printf("输入不在链表范围内");return 0;}PNode temp = linklist->next;int count = 1;while (count < out_begin){temp = temp->next;count++;}for (int i = out_begin; i <= out_end; ++i) {printf("%d ",temp->data);temp = temp->next;}printf("\n");printf("输出 %d 到 %d 个元素完成!\n",out_begin,out_end);return 1;
}int linklist_tail_insert(PNode linklist, int num) {if(NULL == linklist) return -1;printf("请输入 %d 个数据:\n",num);PNode p = linklist;while (p->next != NULL){p = p->next;}for (int i = 0; i < num; ++i) {PNode temp = (PNode) malloc(sizeof(Node));scanf("%d",&temp->data);temp->next = NULL;p->next = temp;p = p->next;linklist->len++;}printf("尾插 %d 个元素成功!\n",num);return 1;
}int linklist_head_insert(PNode linklist, int num) {if(NULL == linklist) return -1;printf("请输入 %d 个数据:\n",num);for (int i = 0; i < num; ++i) {PNode temp = (PNode) malloc(sizeof(Node));scanf("%d",&temp->data);//头插temp->next = linklist->next;linklist->next = temp;//改变长度记录linklist->len++;}printf("头插 %d 个元素成功!\n",num);return 1;
}int linklist_free(PNode linklist) {if(NULL == linklist) return -1;if(linklist->len == 0){printf("链表为空!\n");return 0;}while (linklist->next != NULL){PNode p = linklist->next;linklist->next = p->next;p->next = NULL;free(p);p = NULL;}printf("释放成功!\n");return 1;
}PNode linklist_creat() {PNode p = (PNode) malloc(sizeof(Node));if(NULL == p){printf("创建失败!\n");return NULL;}p->len = 0;p->next = NULL;printf("创建成功!\n");return p;
}

http://www.shuangfujiaoyu.com/news/34576.html

相关文章:

  • 李氏牛仔网站建设风广州网站营销seo
  • h5网站制作视频谷歌seo服务
  • 为公司做网站要做什么准备免费建网站
  • 京东这样的网站是怎么做的微信营销管理软件
  • 有什么可以下载软件的网站百度广告电话号码
  • 实力网站建设免费网站alexa排名查询
  • 安阳网站制作优化快速网站
  • 资兴做网站公司推广网站有效的免费方法
  • 电子商务网站的建设要求网站推广怎么做
  • 一级a做爰全过程片老鸭子网站出售友情链接是什么意思
  • 怎么做网页 网站制作外贸营销型网站建设公司
  • 网站有哪些社交媒体营销案例
  • 龙岩北京网站建设排名查询
  • 绍兴seo网站推广如何做网站推广
  • 江苏专业做网站的公司郑州网站建设十大公司
  • 哪里可做网站关键词搜索推广
  • 青岛知名网站建设哪家好网站备案
  • 腾讯企业邮箱域名可以做网站吗网推软件有哪些
  • 资讯网站域名选购万网注册域名
  • 公司网站制作哪个公司好广告联盟app下载官网
  • 青岛制作公司网站广告联盟平台排名
  • 建筑公司网站设计思路搜索引擎优化seo公司
  • 阿里云网站模板 解析企业网站优化关键词
  • 在哪个网站订酒店做申根签证移动建站优化
  • 网站建设理由盐酸达泊西汀片是治疗什么的药物
  • 网站索引下降如何解决泉州全网营销推广
  • 猎头公司电话产品seo标题是什么
  • 做网站 创业 流程天津百度推广中心
  • 武威网站制作公司哪个好剪辑培训班一般学费多少
  • 怎么做dj网站磁力蜘蛛搜索引擎