天天看点

向单向链表中部插入节点

构造一条含有两个节点的单向链表:学生A,学生B

单向链表的某一节点后插入,知道此节点的指针域next即可

例如向节点A后插入,节点C:

    C.next = A.next; //A的下一个地址,就是B的地址;C连接B

    A.next = &C;//A连接C

向单向链表中部插入“学生C”并输出新的完整的单向链表:学生A,学生C,学生B

向单向链表中部插入节点
/*
*copyright(c) 2018,HH
*All rights reserved.
*作 者:HH
*完成日期:2020年3月7日
*版本号:v1.0
*
*问题描述:向包含两个节点的单向链表中部插入第三个节点
*输入描述:学生C
*程序输出:学生A、学生C、学生C;。
*备注:
思考如何
*1)获取链表中指定元素的位置;
*2)获取单链表中结点个数;
*3)链表插入or删除
*4)两个链表的合并
*5)链表倒置
*6)遍历链表
*/




#include<stdlib.h>
#include<stdio.h>
#include<string.h>


struct  Node
{
	char name[32];
	Node  * next;
};


void  PrintList(Node *pHead) //遍历并打印链表中所有节点;指针的拷贝,不会影响实参;
{
	while ( pHead)
	{
		printf("%s   ", pHead->name);
		pHead = pHead->next; //指向下个节点
	}
	printf("\n");
}


int main()
{
	//定义一条链表,两个节点A,B
	Node A;
	strcpy(A.name,  "学生A");

	Node B;
	strcpy(B.name,  "学生B");

	//形成一条链表
	A.next = &B;
	B.next = NULL;

	//打印链表
	PrintList(&A);


	//在A,B之间插入新节点
	Node  C;
	strcpy(C.name, "学生C");

	//插入(知道前后节点地址的前提下,可以这么写)
	//C.next = &B; //  C->B
	//A.next = &C;  //  A->C

	 //插入(只知道插入位置的前一个节点,只知道A的地址)
	//C.next = (&A)->next;
	C.next = A.next; //A的下一个地址,就是B的地址;C连接B
	A.next = &C;//A连接C

	//打印
	PrintList(&A);


    return 0;
}
           
向单向链表中部插入节点

继续阅读