#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;}
新聞熱點
疑難解答