1.链表的创建,以下:
void AddToTail(Link ** head,int value) { Link * p = new Link(); Link * ahead = *head; p->value = value; p->next = NULL; if(*head == NULL) *head = ahead = p; else { while(ahead->next) { ahead=ahead->next; } ahead->next = p; } }
以上只是创建单个节点并把节点插入链表尾部,若要创建完整链表还需循环输入
2.链表节点的删除(删除筛选第一个)
void RemoveNode(Link ** head,int value) { if(*head == NULL || head == NULL) return; Link * index = *head; Link * index_2=(*head)->next; if(index->value == value) { *head=index_2; delete(index); } else { while(index_2->value!=value) { index=index->next; index_2=index_2->next; if(index_2 == NULL) break; } index->next=index_2->next; delete(index_2); } }
因为使用 new 申请的空间,所以需要用 free 释放内存
3.链表的逆序输出
×使用栈
void ReversePrint_stack(Link ** head) { if(head == NULL || *head == NULL) return ; int stack[30]; int top=0; Link * index=(*head); while(1) { if(index == NULL) break; stack[top++] = index->value; index = index->next; } --top; while(top >= 0) { printf("%2d",stack[top]); --top; } printf("\n"); }
×使用递归
void ReversePrint(Link * head) { if(head == NULL) return; ReversePrint(head->next); printf("%2d",head->value); }
茅檐低小,溪上青青草。
最喜小儿亡赖,溪头卧剥莲蓬。
原文地址:https://www.cnblogs.com/lazytothink/p/12187557.html
时间: 2024-11-10 12:35:04