2019/3/29
尾插法
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TUqNGaKdEZsVjMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZwpmLzITN1EzM0MjM0IDNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
#include<iostream>
using namespace std;
typedef struct LNode {
int data;
struct LNode *next;
} LinkNode;
//尾插法
void CreateListR(LinkNode * &L, int a[], int n) {
LinkNode *s, *r;
L = (LinkNode *)malloc(sizeof(LinkNode));
r = L;
for(int i = 0; i < n; i++) {
s = (LinkNode *)malloc(sizeof(LinkNode));
s->data = a[i];
r->next = s;
r = s;
}
r->next = NULL;
}
void InitList(LinkNode * &L) {
L = (LinkNode *)malloc(sizeof(LinkNode));
L->next = NULL;
}
void DispList(LinkNode * L) {
LinkNode *p = L->next;
while(p != NULL) {
cout << p->data;
p = p->next;
}
cout << endl;
}
int main() {
LinkNode *h;
InitList(h);
int a[10] = {0};
CreateListR(h, a, 10);
DispList(h);
return 0;
}
2019/3/19
链表的插入结点操作:
删除结点:
#include<stdio.h>
#include<stdlib.h>
//初始化五个节点
struct node
{
int data;
node *next;
};
int main()
{
node *head,*p1,*p2;
int i;
head = 0; //头结点初始化
for (i = 1; i <= 5; i++)
{
p1 = (node *)malloc(sizeof(node)); //开辟新空间
p1->data = i;
if(head == 0)
{
head = p1; //头指针指向p1结点
p2 = p1; //p2也指向p1结点(为"p2->next = p1"作准备)
//p1->next = p1不可取,因为每次p1是新的
//并不可以取消掉p2,
}
else
{
p2->next = p1; //尾结点p2连上下一个新结点p1
p2 = p1; //p2指向新结点p1(为下一个连接作准备)
//因为每次p1都在更新,所以每次需要p2来进行中介的指向操作
}
}
p2->next = 0;
//删除数据为2的链表结点
p1 = head;
while(p1->data != 2)
{
p2 = p1;
p1 = p1->next;
}
p2->next = p1->next; //将p1->next(也就是3)连接上p2->next(p2是1,p2->next被赋值为3)
delete p1; //删除2
//输出链表数据
node *p;
p = head;
printf("链表上各结点的数据为:");
while(p != 0)
{
printf("%d ",p->data);
p = p->next;
}
printf("\n");
re
百度文库上的一个PPT:https://wenku.baidu.com/view/d6c490e0ba4cf7ec4afe04a1b0717fd5370cb24a.html