单链表
遇到的问题:主要还是指针问题,还有算法思想要清晰。
在删除时对于相同的数只能删除一次。不知什么原因。在GCC上运行却可以删除相同的数多次。
代码:
#include <iostream> #include <cstdlib> using namespace std; typedef struct ListNode { int data; struct ListNode *next; }*List; void createList(List &list, int arr[], int n) { List head,node; list=(List) malloc ( sizeof (List)); list->next=NULL; head=list; for ( int i=0;i<n;i++) { node=(List) malloc ( sizeof (List)); if (!node) cout<< "内存分配失败." <<endl; else { node->data=arr[i]; node->next=head->next; head->next=node; } } } void insertListNode(List list, int elem) { List node,head,pre; node=(List) malloc ( sizeof (List)); node->data=elem; node->next=NULL; head=list->next; pre=list; while (head) { if (head->data>elem) { pre=head; head=head->next; if (head==NULL) { pre->next=node; break ; } } else { node->next=pre->next; pre->next=node; break ; } } } void deleteListNode(List list, int elem) { List head,pre,node; head=list->next; pre=list; while (head) { if (head->data==elem) { node=head; pre->next=head->next; break ; } else { pre=head; head=head->next; if (head->next==NULL) { if (head->data==elem) pre->next=NULL; free (head); break ; } } } } void merge(List list1,List list2) { List head=list1->next; while (head) { head=head->next; if (head->next==NULL) break ; } head->next=list2->next; } void display(List list) { List head; head=list->next; while (head) { cout<<head->data<< "->" ; head=head->next; } cout<<endl; } int main() { List list,list2; int arr[]={1,5,74,3,5,8}; int arr2[]={4,38,45,2}; createList(list,arr,6); createList(list2,arr2,4); cout<< "display list:" ; display(list); insertListNode(list,23); cout<< "display list:" ; display(list); insertListNode(list,6); cout<< "display list:" ; display(list); deleteListNode(list,5); cout<< "display list:" ; display(list); merge(list,list2); cout<< "display list:" ; display(list); return 0; } |
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述