【領卓教育】資料結構/C 單鏈表順序插入 結點
阿新 • • 發佈:2018-12-19
先定義一個結構體,並建立一個空的帶頭單鏈表!
typedef struct node
{
int data;
struct node * next;
}link_list;
link_list * creat_malloc() //返回一個指標
{
link_list *p ;
p = malloc(sizeof(*p));
if(p == NULL)
return NULL;
p->next = NULL;
return p;
}
順序插入結點需要將你要插入的結點 與 連結串列中的值進行比較!
int list_order_insert(link_list *me,int *data) //順序插入 { link_list *p = me,*q; while(p->next && p->next->data < *data ) //p->next 表示p->next不為空 { //*data是你要插入的值 p = p->next; //你要插入的值大於當前結點,就與下一個結點比較 //當前結點的值要是大於*data,就跳出迴圈 } q = malloc(sizeof(*q)); //為你插入的結點申請記憶體空間,並用q指向它 if(q == NULL) //如果申請失敗,返回-1 return -1; q->data = *data; //將引數*data 賦給q->data q->next = p->next; //q這兩句是插入的基本語句 p ->next = q; return 0; }
下面是主函式:
int main()
{
int i;
link_list *p;
int arr[] = {12,9,3,34,5,45,6};
p=creat_malloc();
printf("hello1\n");
for(i = 0;i<sizeof(arr)/sizeof(*arr);i++)
{
list_order_insert(p,&arr[i]);
}
printf("hello\n");
show(p);
}
結果如下: