鏈表 插入數字
#include <stdlib.h> malloc頭函數
struct node 定義結構體來存儲節點,每個節點由兩部分組成
{
int data;
struct node *next;
};
for(i=1;i<=n;i++)
{
scanf("%d",&a);
//動態申請空間來存放一個節點,並用臨時指針p指向這個節點
p=(struct node *)malloc(sizeof(struct node));
p->data=a; //將數據存在當前節點的data域中
p->next=NULL;//設置當前節點的後續指針爲空,即當前節點的下一個節點爲空
if(head==NULL)
head=p; //如果這是第一個創建的節點
else
q->next=p; //如果不是第一個創建的節點,則上一個節點的後繼指針指向當前節點
q=p; //指針q也指向當前節點
}
scanf("%d",&a); //輸入要插入的數
t=head;
//輸出鏈表中所有數
while(t!=NULL)
{
if(t->next==NULL || t->next->data>a) //插入新增節點
{
p=(struct node *)malloc(sizeof(struct node));
p->data=a;
p->next=t->next; //新增節點的後繼節點指向當前節點的後繼節點 注意這兩行
t->next=p; //當前節點的後繼節點指向新增節點
break;
}
t=t->next; //繼續下一個節點 第一次沒有寫這一句,程序運行後跳不出。
}
第一次沒有釋放空間free()
malloc後要記住釋放空間。