線形リストに挿入するプログラム
連結リストに要素を挿入する関数 insert( ) を関数を定義して,以下の条件の下で整数型の要素を連結リストに挿入するプログラムを作成しなければならないのですが、関数insert部分が見当がつきません.
回答よろしくおねがいします。
条件
1. 関数名を insert( ) とする.
2. 連結リストの先頭ノードを指すポインタ(*head)と,リストに挿入する要素(data)を引数とする.
3. 連結リストの先頭ノードを指すポインタ(*head)からたどって,要素がリスト内で降順(大きいものから小さいものへの順)となる位置に要素を挿入する.
4. 引数で示された要素が既にリストに存在する場合には,要素の挿入は行なわない.
#include <stdio.h>
#include <stdlib.h>
typedef struct __cell {
int data;
struct __cell *next;
} CELL;
CELL *insert(CELL *head, int data);
void showList(CELL *head);
int main(void)
{
CELL *head;
head = NULL;
head = insert(head, 5);
showList(head);
head = insert(head, 2);
showList(head);
head = insert(head, 6);
showList(head);
head = insert(head, 4);
showList(head);
head = insert(head, 6);
showList(head);
head = insert(head, 4);
showList(head);
head = insert(head, 1);
showList(head);
return 0;
}
CELL *insert(CELL *head, int data)
{
/*ここで関数 insert( ) を定義します*/
}
void showList(CELL *head)
{
CELL *p;
for(p=head ; p!=NULL ; p=(*p).next)
{
printf("%d -> ", (*p).data);
}
printf("fin\n");
}