链表的基本操作

来源:互联网 发布:淘宝卖家如何发动态 编辑:程序博客网 时间:2024/06/05 02:18

C/C++

首先,用结构体创建节点

struct ListNode{int       val;ListNode* next;};
一、初始化操作

第1种,不返回的情况

void InitList1(ListNode **L){*L =(ListNode*)malloc(sizeof(ListNode));(*L)->next=NULL;}

InitList1(&head);

第2种,不返回的情况

void InitList2(ListNode *&L){L =(ListNode*)malloc(sizeof(ListNode));L->next=NULL;}

InitList2(head);

第3种,返回的情况

ListNode* InitList3(ListNode* head){head =(ListNode*)malloc(sizeof(ListNode));head->next=NULL;return head;}
head=InitList3(head);

第二、创建链表

1.尾插法

ListNode* CreateLinkList1(ListNode* head,int size){int i;ListNode* p;ListNode* temp;p=head;for(i=0;i<size;i++){temp=(ListNode *)malloc(sizeof(ListNode));cin>>temp->key;p->next=temp;temp->next=NULL;p=temp;}return head;}

void CreateLinkList2(ListNode* head,int size){int i;ListNode* p;ListNode* temp;p=head;for(i=0;i<size;i++){temp=(ListNode *)malloc(sizeof(ListNode));cin>>temp->key;p->next=temp;temp->next=NULL;p=temp;}}
返回和不返回得到的结果一样

2.头插法

ListNode* CreateLinkList3(ListNode* head,int size){int i;ListNode* p;ListNode* temp;p=head;for(i=0;i<size;i++){temp=(ListNode *)malloc(sizeof(ListNode));cin>>temp->key;temp->next=p->next;p->next=temp;};return head;}

void CreateLinkList4(ListNode *head,int size){int i;ListNode* p;ListNode* temp;p=head;for(i=0;i<size;i++){temp=(ListNode *)malloc(sizeof(ListNode));cin>>temp->key;temp->next=p->next;p->next=temp;}}

所以对于创建链表可以不用返回头结点。







0 0