C語言 刪除單鏈表中值爲e的全部元素

#include<stdio.h>
#include<malloc.h>
//刪除單鏈表中值爲e的全部元素
typedef struct Node
{
int data;
struct Node *next;
} LNode,*LinkList;
void showList(LinkList head);
void CreateList(LinkList &head) //建鏈表
{
head=(LinkList)malloc(sizeof(LNode));
head->next=NULL;
LinkList w=head;
int n;
printf(“輸入要插入的數據個數:\n”);
scanf("%d",&n);
printf(“輸入要插入的數據:\n”);
for(int i=0; i<n; i++)
{
int t;
scanf("%d",&t);
LinkList p=(LinkList)malloc(sizeof(LNode));
p->data=t;

p->next=w->next; //頭插法
w->next=p;
w=w->next;
w->next=NULL;
// p->next=head->next; 尾插法
// head->next=p;
}
}
void deleteLnode(LinkList &head,int t) //刪除鏈表中值爲t的所有元素
{
LinkList q=head->next;
int index=1;
while(q)
{
if(q->data==t)
{
q=q->next;
LinkList x=head;
for(int i=1; i<index; i++)
{
x=x->next;
}
LinkList p=x->next;
x->next=p->next;
free(p );
}
else
{
index++;
q=q->next;
}
}
}

void showList(LinkList head) //遍歷鏈表
{
LinkList p=head->next;
while (p )
{
printf("%d “,p->data);
p=p->next;
}
}
int main()
{
LinkList head;
CreateList(head);
int t;
printf(“輸入要刪除的元素e:”);
scanf(”%d",&t);
deleteLnode(head,t);
printf(“刪除後的單鏈表:\n”);
showList(head);
}

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