#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
/*
單向循環(huán)鏈表實(shí)現(xiàn)
*/
typedef struct Node
{
int data;
struct Node* Next;
} Node;
typedef struct Node* List;
// 創(chuàng)建單向循環(huán)鏈表
void CreateList(List* L, int n)
{
srand(time(0));
*L = (List)malloc(sizeof(Node)); // 給頭結(jié)點(diǎn)分配空間
(*L)->Next = *L; // 頭結(jié)點(diǎn)不存放數(shù)據(jù),指向自身
List pTail = *L; // 創(chuàng)建尾結(jié)點(diǎn),初始化讓其指向頭結(jié)點(diǎn)
for(int i = 0; i < n; i++){
List pNew = (List)malloc(sizeof(Node));
pNew->data = rand() % 100 + 1;
pTail->Next = pNew; // 尾結(jié)點(diǎn)指向新創(chuàng)造的節(jié)點(diǎn)
pTail = pNew; // 重定位尾結(jié)點(diǎn)位置
}
pTail->Next = *L; // 創(chuàng)建完成,讓尾結(jié)點(diǎn)指向頭結(jié)點(diǎn)
}
// 打印鏈表
void PrintList(List L)
{
List p = L->Next;
// 遍歷鏈表
while(p != L){
printf("%d ", p->data);
p = p->Next;
}
printf("\n");
}
// 向鏈表中插入節(jié)點(diǎn)(在第pos個(gè)位置之后插入data)
void InsertList(List* L, int pos, int data)
{
List p = (*L)->Next;
int i = 1;
while(i != pos)
{
i++;
p = p->Next;
}
List pNew = (List)malloc(sizeof(Node));
pNew->data = data;
pNew->Next = p->Next;
p->Next = pNew;
}
// 從鏈表中刪除節(jié)點(diǎn)(刪除第pos個(gè)結(jié)點(diǎn))
void DeleteList(List* L, int pos)
{
List p = (*L)->Next;
int i = 1;
//找到pos之前的位置就停止
while(i+1 != pos)
{
i++;
p = p->Next;
}
List q = p->Next;
p->Next = q->Next;
free(q);
}
int main()
{
List l;
CreateList(&l, 20);
PrintList(l);
InsertList(&l, 3, 300);
PrintList(l);
DeleteList(&l, 5);
PrintList(l);
return 0;
}
2020-08-20[單向循環(huán)鏈表實(shí)現(xiàn) ]
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。