向單向鏈表中部插入節點

構造一條含有兩個節點的單向鏈表:學生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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章