#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct Link{
int base;
struct Link *next;
}Link;
void createLink(Link **LN,int A[],int n){//創(chuàng)建鏈表
Link *node,*end,*first;
*LN = (Link *)malloc(sizeof(Link));
first = end =*LN;
int i= 0 ;
for(i;i<n;i++){
node = (Link *)malloc(sizeof(Link));
node->base=A[i];
end->next = node;
end = node;
}
end->next=NULL;
}
void traversal(Link *LN){//遍歷鏈表
Link *Node;
Node =LN->next;
while(Node->next!=NULL){
printf("%d\n",Node->base);
Node=Node->next;
}
printf("%d\n",Node->base);
}
int getLength(Link *LN){//獲取鏈表長度
int length=0;
Link *Node;
Node =LN->next;
while(Node->next!=NULL){
length++;
Node=Node->next;
}
length++;
return length;
}
int insert(Link **LN,int index,int val){//插入元素
Link *Node;
Link *end;
end = *LN;
int j=1;
int length=getLength(*LN);
if(index>length+1){
printf("刪除位置不合法請重新選擇!\n");
}else if(index==length+1){//插入末尾的情況
Node = (Link*)malloc(sizeof(Link));
Node->base=val;
Node->next=NULL;
end = end->next;
for(j;j<length;j++){
end=end->next;
}
end->next=Node;
}else if(index<=length){//插入中間的情況
for(j;j<index;j++){
end=end->next;
}
Node = (Link*)malloc(sizeof(Link));
Node->base=val;
printf("second\n");
Link *record;
record = end->next;
end->next=Node;
printf("third\n");
Node->next=record;
}
}
void deleteNode(Link **LN,int index){//刪除元素
Link *end;
end = *LN;
int j=1;
int length=getLength(*LN);
if(index>length){
printf("刪除位置不合法請重新選擇!\n");
}else if(index==length){//刪除末尾的情況
for(j;j<length;j++){
end=end->next;
}
printf("second\n");
end->next=NULL;
printf("third\n");
}else if(index<length){//刪除中間的情況
for(j;j<index;j++){
end=end->next;
}
Link *record;
record = end->next;
end->next=record->next;
}
}
int main(int argc, char *argv[]) {
Link L;
Link *LN;//頭指針
int i;
printf("1.向鏈表中添加元素!\n");
printf("2.遍歷鏈表!\n");
printf("3.獲得鏈表長度!\n");
printf("4.向鏈表中插入元素!\n");
printf("5.刪除鏈表中的元素!\n");
printf("********************************************\n");
while(1){
printf("請輸入要進(jìn)行的操作!\n");
scanf("%d",&i);
switch(i){
case 5:
printf("請輸入要刪除元素的位置!\n");
int index;
scanf("%d",&index);
deleteNode(&LN,index);
break;
case 4:{
printf("請輸入想要插入的位置!\n");
int index,val;
scanf("%d",&index);
printf("請輸入插入的元素!\n");
scanf("%d",&val);
insert(&LN,index,val);
break;
}
case 3:
printf("鏈表的長度為%d\n",getLength(LN));
break;
case 2:
printf("鏈表中含有的元素:\n");
traversal(LN);
break;
case 1:
printf("請輸入鏈表的長度!\n");
int n;
scanf("%d",&n);
int A[n];
printf("請輸入要加入到鏈表的數(shù)據(jù)!\n");
int j=0;
for(j;j<n;j++){
scanf("%d",&A[j]);
}
createLink(&LN,A,n);
break;
}
}
return 0;
}
單鏈表
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。