您的位置:首页 > 其它

单链表的创建(有头结点和无头结点)

2017-01-14 13:37 239 查看

1、有头结点的单链表的创建

#include <iostream>
using namespace std;

struct ListNode{
int val;
ListNode *next;
};

//有头结点的单链表的创建
int CreateListNode(ListNode *head)
{
if(head == NULL)
return 123;

int n;
printf("请输入要创建的单链表的长度:");
scanf("%d",&n);

ListNode *p = head;                 //p一直指向链表的末尾,用来遍历链表

if(n==0)
return -123;

for(int i=0; i<n; i++)
{
int number;
printf("请输入第%d个值:",i+1);
scanf("%d",&number);

ListNode *s = new ListNode;     //定义一个s节点用来存放每次要输入的值
s->val = number;
s->next = NULL;

p->next = s;
p = s;
}
}

int main()
{
ListNode *L = new ListNode;
L->next = NULL;

CreateListNode(L);
}


2、无头结点的单链表的创建

因为无头结点的链表在创建的时候头结点的值被改变了,所以创建链表后若还会在链表上调用其他函数,只能采用二级指针来实现。


#include <iostream>
using namespace std;

struct ListNode{
int val;
ListNode *next;
};

//无头结点的单链表的创建
int CreateListNode(ListNode **head)
{
int n;
printf("请输入要创建的单链表的长度:");
scanf("%d",&n);

if(n==0)
return -123;

*head == NULL;

for(int i=0; i<n; i++)
{
int number;
printf("请输入第%d个值:",i+1);
scanf("%d",&number);

ListNode *tail = *head;

ListNode *s = new ListNode;     //定义一个s节点用来存放每次要输入的值
s->val = number;
s->next = NULL;

if(tail == NULL)
{
*head = s;
tail = *head;
}
else
{
tail->next = s;
tail = s;
}
}
}

int main()
{
ListNode *L = new ListNode;
L->next = NULL;

CreateListNode(&L);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  单链表 创建