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