用C和JAVA分别创建链表的实例
发布时间:2020-12-14 05:19:35 所属栏目:Java 来源:网络整理
导读:创建链表、往链表中插入数据、删除数据等操作,以单链表为例。 1.使用C语言创建一个链表: 复制代码 代码如下: typedef struct nd{ int data; struct nd* next; } node; //初始化得到一个链表头节点 node* init(void){ node* head=(node*)malloc(sizeof(node)
创建链表、往链表中插入数据、删除数据等操作,以单链表为例。 1.使用C语言创建一个链表: 复制代码 代码如下: typedef struct nd{ int data; struct nd* next; } node; //初始化得到一个链表头节点 node* init(void){ node* head=(node*)malloc(sizeof(node)); if(head==NULL) return NULL; head->next=NULL; return head; } //在链表尾部插入数据 void insert(node* head,int data){ if(head==NULL) return; node* p=head; while(p->next!=NULL) p=p->next; node* new=(node*)malloc(sizeof(node)); if(new==NULL) return; new->data=data; new->next=NULL;//新节点作为链表的尾节点 p->next=new;//将新的节点链接到链表尾部 } //从链表中删除一个节点,这里返回值为空,即不返回删除的节点 void delete(node* head,int data){ if(head==NULL) return ; node *p=head; if(head->data==data){//如何头节点为要删除的节点 head=head->next;//更新链表的头节点为头节点的下一个节点 free(p); return; } node *q=head->next; while(q!=NULL){ if(q->data==data){//找到要删除的节点q node *del=q; p->next=q->next; free(del); } p=q;//不是要删除的节点,则更新p、q,继续往后找 q=q->next; } } 2.Java创建链表 创建一个链表 复制代码 代码如下: class Node { Node next = null; int data; public Node(int d) { data = d; } void appendToTail(int d) {//添加数据到链表尾部 Node end = new Node(d); Node n = this; while (n.next != null) { n = n.next; } n.next = end; } } 从单链表中删除一个节点 复制代码 代码如下: Node deleteNode(Node head,int d) { Node n = head; if (n.data == d) { return head.next; /* moved head */ } while (n.next != null) { if (n.next.data == d) { n.next = n.next.next; return head; /* head didn't change */ } n = n.next; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |