单链表的创建-头插法和尾插法

单链表的创建-头插法和尾插法,第1张

单链表的创建一般主流分为两种创建方式:头插法和尾插法。

1)创建头节点,维护head指针(引用)来指向头节点;

2)newNode表示待插入节点,维护newnode指向新节点;

3)

case1:当链表为空时,即首次插入新节点,将head.next指向新插入节点,即 head.next = newNode

case2:如果不是首次插入新节点,将新节点插入到head和head.next指向节点之间,即

newnode.next = head.next

head.next = newNode

1)创建头节点,维护head指针(引用)来指向头节点;

2)newNode表示待插入节点,维护tail指针,指示链表尾节点,当tail.next == null时,表示tail指向尾节点;

3)

case1:当链表为空时,即首次插入新节点,将head.next指向新插入节点,即 head.next = newNode

case2:如果不是首次插入新节点,需要遍历整个链表定位到尾节点,并将新节点插入到尾节点之后,即

tail.next = newNode

每次将待插入的结点链在单链表的最后一个结点的后面

void creatlist(LinkList *LDatatype a[10])

{ L = (LinkList *) malloc (sizeof(struct node))

L->next = NULL                  //生成头结点    

r = L                           //r为指向表尾的指针

for(i = 0i<=9i++)

{ p = (LinkList *) malloc (sizeof(struct node))

p->data = a[i]         //生成新的结点

p->next = NULL

r->next = p            //将新生成的结点插在表尾

r = p                  //将表尾指针指向新插入的结点

}

}

首先,你是C还是C++语言,决定你用malloc函数还是new运算符来动态开辟结点。

其次,要设置指针,p1作为新开辟结点,p2指向尾结点。每次开辟一个新节点,就让当前尾结点的next域指向新结点,新结点的next置空,然后让p2重新定位到p1位置,新结点作为尾结点。这是尾插法建表。

再次,如果查找Key值,

k ←key

for (p3=headp3!=p2p3++)

if p3→key == k

then ....↓....

注意,这里找到结点了,就要先把此结点前驱的尾指针指向此节点的后继,然后free或者delete就可以了,你如果想要具体的源代码,那么请参考

C程序设计,第四版,清华大学出版社,谭浩强,习题解答小册上,第十二章结构体和共同体中,关于链表的简单4个 *** 作,

或者是C++程序设计,清华大学出版社,谭浩强,第八章面向过程程序设计,习题解答小册上也有C++版本的单链表处理。

如果你要能编译的源代码来交作业,请查阅上述两本书,绝对有。

如果你是为了学好C或者C++,请认真打扎实基本功。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11957593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存