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

慈溪做网站哪家好怎么制作公司网页教程

慈溪做网站哪家好,怎么制作公司网页教程,网站建设案例平台,京东商城网站建设教程要求功能: 创建学生信息表 头插法输入学生信息 尾插法输入学生信息输出任意位置范围内的学生信息 头删法删除学生信息尾删法删除学生信息按位置添加学生信息按位置删除学生信息 按位置修改学生信息按位置查找学生信息释放空间 今天有点累,懒得写注释了&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.yayakq.cn/news/778687/

相关文章:

  • 廊坊市建设银行网站网站设置反爬虫的主要原因
  • 网站建设龙采科技门户网站建站流程
  • 域名有了怎么建设网站360上做网站
  • 响应式网站建设推荐乐云践新外贸wordpress模板
  • 电子商务与网站建设实践论文百度网盘网页登录入口
  • 佛山电商网站制作团队设计工业
  • 苏宁易购电子商务网站建设目标网站建设与设计实习报告
  • 昆明企业做网站wordpress评论不准设置网站
  • 开发一个网站成本红桥天津网站建设
  • 上海崇明林业建设有限公司网站wordpress 模版
  • 专业网站优化案例怎样提高网站收录
  • 阳江网站制作建设在哪买网站链接
  • 新闻文章网站源码wordpress影视主题模板免费下载
  • 流行网站类型做商贸生意的人都去什么网站
  • 怎么在百度自己创网站十大it外包公司
  • 国家级示范职业学校 建设网站石排网站设计
  • 怎么制作一个个人网站自己的公众号
  • sns社交网站 建设企业培训员工培训平台
  • 家具东莞网站建设技术支持网站建设中代码
  • 利搜网站排名软件wordpress域名二级目录如何跳转
  • 网站建设运营合同书品牌营销策划方案怎么做
  • 上海营销网站推广多传媒建站推荐
  • 海口专业网站建设公司wordpress get_term_link
  • 永康建设局网站购买保险的网站
  • 网站推广途径有哪些在线文档网站源码
  • 南阳建站公司vuejs仿WordPress
  • 辽宁做网站和优化wordpress专业开发指南
  • 网站建设自查及整改报告网站建设主页
  • win7怎么做网站域名绑定文章网站哪里建设好
  • 政务公开和网站建设情况总结vi设计案例分析