网站页脚包括什么,网站建设项目成本估算表,门花网站建设,网站开发属于什么模式1. 单链表任意位置删除, 单链表任意位置修改, 单链表任意位置查找, 单链表任意元素查找, 单链表任意元素修改, 单链表任意元素删除, 单链表逆置 // main.c#include head.hint main(int argc, const char *argv[])
{Linklist headNULL; //head 是头指针// printf(head.hint main(int argc, const char *argv[])
{Linklist headNULL; //head 是头指针// printf(head%p\n, head);// printf(head-data%d\n, head-data);// printf(head-next%p\n, head-next);int n;int pos;int key;data_type element;printf(please input n:);scanf(%d, n);for(int i0; in; i){printf(please input No.%d element: , i1);scanf(%d, element);headinsert_head(element, head);}puts(---ouput Linklist---);output(head);/*puts(---get tail node---);Linklist node_tail get_tail_node(head);printf(tail-data%d\n, node_tail-data);puts(---append element---);printf(please input element to append:);scanf(%d, element);headappend(head, element);output(head);puts(---delete first node---);headdelete_first(head);headdelete_first(head);output(head);puts(---delete tail node---);headdelete_tail(head);headdelete_tail(head);output(head);puts(---get list len---);int lenget_len(head);printf(len%d\n, len);puts(---insert_by_pos---);int pos;printf(please input pos: );scanf(%d, pos);printf(please input element: );scanf(%d, element);headinsert_by_pos(head, pos, element);output(head);puts(---get node by pos---);printf(please input pos:);scanf(%d, pos);Linklist node get_node_by_pos(head, pos);printf(node-data%d\n, node-data);*/puts(---delete node by pos---);printf(please input pos:);scanf(%d, pos);head delete_by_pos(head, pos);output(head);puts(---update node by pos---);printf(please input pos:);scanf(%d, pos);printf(please element:);scanf(%d, element);int ret update_by_pos(head, pos, element);output(head);puts(---get node by element---);printf(please element:);scanf(%d, element);pos get_node_by_element(head, element);printf(pos%d\n,pos);
//puts(---update node by element---);printf(please input a key:);scanf(%d, key);printf(please input an element:);scanf(%d, element);ret update_node_by_element(head, key, element);output(head);
//puts(---delete by element---);printf(please input element:);scanf(%d, element);head delete_node_by_element(head, element);output(head);//puts(---reverse list---);head revser_list(head);output(head);
//return 0;
}//head.h#ifndef __HEAD_H__
#define __HEAD_H__#include string.h
#include stdlib.h
#include stdio.htypedef int data_type;typedef struct Node
{int data;struct Node *next;}*Linklist;Linklist create();typedef struct Node node;Linklist create_node();
Linklist insert_head(data_type data, Linklist head);
int output(Linklist head);
Linklist append(Linklist head, data_type element);
Linklist get_tail_node(Linklist head);
Linklist delete_first(Linklist head);
Linklist free_node(Linklist node);
Linklist delete_tail(Linklist head);
int get_len(Linklist head);
Linklist insert_by_pos(Linklist head, int pos, data_type element);
Linklist delete_by_pos(Linklist head, int pos);
Linklist get_node_by_pos(Linklist head, int pos);
int update_by_pos(Linklist head, int pos, data_type element);
int get_node_by_element(Linklist head, data_type key);
Linklist delete_node_by_element(Linklist head, data_type key);
Linklist revser_list(Linklist head);
int update_node_by_element(Linklist head, data_type key, data_type element);
#endif//test.c#include head.hLinklist create_node()
{Linklist node(Linklist)malloc(sizeof(struct Node));if(NULLnode){return NULL;}//successnode-data0;node-nextNULL;return node;
}Linklist insert_head(data_type element, Linklist head)
{//创建新节点Linklist node create_node();if(NULLnode){return head;}node-dataelement;//判断链表是否位空if(NULLhead){headnode;}else //链表不为空{node-nexthead;headnode; }return head;// 这里的head是形参所以需要返回用以改变主函数的head
}int output(Linklist head)
{if(NULLhead){return -1;}Linklist node head;while(node!NULL){//printf(data%d, next%p\t, node-data, node-next);printf(%d\t, node-data);nodenode-next;}putchar(10);}Linklist get_tail_node(Linklist head)
{Linklist nodehead;while(node-next!NULL node!NULL){nodenode-next;}return node;}Linklist append(Linklist head, data_type element)
{//Linklist node create_node();if(NULLnode){return head;}node-dataelement;node-nextNULL;Linklist node_tailget_tail_node(head);if(NULLnode_tail){head node;}node_tail-next node; return head;}Linklist free_node(Linklist node)
{free(node);nodeNULL;return node;}Linklist delete_first(Linklist head)
{if(NULLhead){return head;}Linklist node_deleted head;headhead-next;node_deleted free_node(node_deleted);return head;}Linklist delete_tail(Linklist head)
{if(NULLhead){return head;}//找到 tail 之前的nodeLinklist node head;if(node-nextNULL){headfree_node(node);return head;}while(NULL!node-next-next){nodenode-next;}node-nextfree_node(node-next);node-nextNULL;return head;
}int get_len(Linklist head)
{//puts(in get_len);int count0;Linklist nodehead;while(node!NULL){//printf(len%d\n, len);count;nodenode-next;}return count;}Linklist insert_by_pos(Linklist head, int pos, data_type element)
{//pos, Linklist pos start from 1 hearint lenget_len(head);if(pos1 || poslen1){return head;}if(NULLhead || pos1)headinsert_head(element, head);else{//find node at posLinklist nodehead;for(int i1; ipos-1; i){nodenode-next;}printf(node(pos-1)-data%d, node-data);//create new nodeLinklist node_new create_node();if(NULLnode_new){return head;}node_new-dataelement;//insert node_new-nextnode-next;node-nextnode_new;}return head;
}Linklist get_node_by_pos(Linklist head,int pos)
{if(NULLhead){return head;}int lenget_len(head);if(pos1||poslen){return NULL;}Linklist nodehead;int count1;while(countpos){count;nodenode-next;}return node;}Linklist delete_by_pos(Linklist head,int pos)
{//note: list pos start from 1if(NULLhead){return head;}//判断pos合法int lenget_len(head);if(pos1 poslen) {return head;}if(1len || 1pos){headdelete_first(head);}else{Linklist node get_node_by_pos(head, pos-1);//deleteLinklist node_tbd node-next;node-nextnode-next-next;free_node(node_tbd);node_tbdNULL;}return head;}int update_by_pos(Linklist head, int pos, data_type element)
{if(NULLhead){return -1;}Linklist node get_node_by_pos(head, pos);if(NULLnode)return -1;node-dataelement;return 0;}int get_node_by_element(Linklist head, data_type key)
{//找到返回pos信息if(NULLhead){return -1;}int count0;int is_found0;Linklist nodehead;while(NULL!node){//printf(node-data%d\n, node-data);count;if(node-datakey){is_found1;break;}nodenode-next;}if(is_found1){return count;}else{return -1;}
}Linklist delete_node_by_element(Linklist head, data_type key)
{if(NULLhead){return head;}int pos get_node_by_element(head, key);if(-1pos){return head;}headdelete_by_pos(head, pos);return head;}Linklist revser_list(Linklist head)
{if(NULLhead||NULLhead-next){return head;}Linklist nodehead-next;head-nextNULL;while(NULL!node){Linklist node_tnode;nodenode-next;node_t-nexthead;headnode_t;}return head;
}int update_node_by_element(Linklist head, data_type key, data_type element)
{if(NULLhead){return -1;}int posget_node_by_element(head, key);if(-1pos){return -1;}int retupdate_by_pos(head, pos, element);return ret;}运行结果
please input n:7
please input No.1 element: 1
please input No.2 element: 2
please input No.3 element: 3
please input No.4 element: 4
please input No.5 element: 5
please input No.6 element: 6
please input No.7 element: 7
---ouput Linklist---
7 6 5 4 3 2 1
---delete node by pos---
please input pos:1
6 5 4 3 2 1
---update node by pos---
please input pos:2
please element:500
6 500 4 3 2 1
---get node by element---
please element:4
pos3
---update node by element---
please input a key:4
please input an element:400
6 500 400 3 2 1
---delete by element---
please input element:2
6 500 400 3 1
---reverse list---
1 3 400 500 6 2.思维导图