#include <stdio.h>#include <malloc.h>typedef struct node { int num; node* next;} NODE;int lenght = -1;//线性表的链式结构的长度/* 创建节点 */NODE* create_node(int num) { NODE* n = (NODE*) malloc(sizeof(NODE)); n->num = num; n->next = NULL; lenght++; return n;}/* 插入一个结点到某个数字的后面 return 插入是否成功*/int insert_node(NODE* head, int how, int num) { NODE* p = head->next; while (p != NULL) { if (p->num == how) { NODE* z = p->next; p->next = create_node(num); p->next->next = z; return 1; } p = p->next; } return 0;}/* 删除一个结点*/int delete_node(NODE* head, int how) { NODE* p = head->next; NODE* last = head; while (p != NULL) { if (p->num == how) { last->next = p->next; free(p); p = NULL; lenght--; return 1; } p = p->next; last = last->next; } return 0;}/* 修改一个结点*/void update_node(NODE* head, int how, int num) { NODE* p = head->next; while (p != NULL) { if (p->num == how) { p->num = num; return; } p = p->next; } PRintf("该元素不存在!/n");}/* 查询一个节点*/void search_node(NODE* head, int how) { NODE* p = head->next; while (p != NULL) { if (how == p->num) { printf("查询到 %d/n", p->num); return; } p = p->next; } printf("该元素不存在!/n");}void print_list(NODE* head) { //线性表的链式结构的遍历 NODE* p = head; while (p != NULL) { printf("%d ", p->num); p = p->next; } printf("/n/n");}int main() { NODE* headNode = create_node(-1); //创建头结点 NODE* p = headNode; for (int i = 0; i < 10; i++) { p->next = create_node(i); if (headNode->next == NULL) { printf("NULL"); } p = p->next; } printf("线性表的链式结构的长度 = %d/n", lenght); print_list(headNode->next); printf("--插入数据:100/n"); insert_node(headNode, 4, 100); //在数字4的后面插入100 printf("线性表的链式结构的长度 = %d/n", lenght); print_list(headNode->next); printf("--删除数据:0/n"); delete_node(headNode, 0); //删除数字为0的节点 printf("线性表的链式结构的长度 = %d/n", lenght); print_list(headNode->next); printf("--修改数据:1/n"); update_node(headNode, 1, 111); //修改数字1为111 printf("线性表的链式结构的长度 = %d/n", lenght); print_list(headNode->next); printf("--查询数据:1000/n"); search_node(headNode, 1000); //查询1000是否存在于链表当中 return 0;}
新闻热点
疑难解答