一方向チェーンテーブルのノードを削除
1244 ワード
一方向チェーンテーブルのヘッダheadが知られており、ノードを削除するアルゴリズムが書かれており、このノードを見つけてから削除する必要があります.
実行結果:
元のチェーンテーブルデータ:1 2 3 4 5 6 7 8 9削除するデータを入力する:6削除した後のチェーンテーブルデータ:1 2 3 4 5 8 9
#include
using namespace std;
typedef struct node
{
int number;
struct node *next;
}Node;
Node *Delete(Node *head,int key)
{
Node *node1=head;
Node *node2=NULL;
if (head==NULL)
{
return NULL;
}
else
{
if (node1->number==key)
{
head=head->next;
free(node1);
return head;
}
else
{
while (node1!=NULL)
{
node2=node1;
node2=node2->next;
if (node2->number==key)
{
node1->next=node2->next;
free(node2);
break;
}
node1=node1->next;
}
return head;
}
}
}
int main()
{
Node *head=(Node*)malloc(sizeof(Node));
Node *p,*q,*q1;
int key;
p=(Node*)malloc(sizeof(Node));
q1=q=head;
int i;
for (i=1;i<10;i++)
{
p->number=i;
head->next=p;
head=p;
p=(Node*)malloc(sizeof(Node));
}
head->next=NULL;
cout<next;
while (q1!=NULL)
{
cout<number<next;
}
cout<>key;
p=Delete(q->next,key);
cout<number<next;
}
cout<
実行結果:
元のチェーンテーブルデータ:1 2 3 4 5 6 7 8 9削除するデータを入力する:6削除した後のチェーンテーブルデータ:1 2 3 4 5 8 9