首先宣告乙個結構體,裡面包含結點內容和結點指標兩塊;
struct node
typedef struct node listnode//重新命名結構體
//建立鍊錶
listnode * creatlist(listnode * head,int n);//宣告,head代表頭結點指標,n代表建立的結點個數
listnode * creatlist(listnode * head, int n)
p->next=null;//將最後結點的指標清空;
return head;//返回煉表頭結點; }
//插入節點
void insertnode(int i,listnode *head,int n);//i代表要插入的位置,head代表頭結點,n代表鍊錶長度
void insertnode(int i,listnode *head,int n)
else
//為要插入的結點q開闢空間
q=(listnode *)malloc(sizeof(listnode));
scanf("%s",&p->name);
scanf("%d",&p->age);
//將結點q插進去
q->next=p->next;
p->next=q; }
}//刪除結點
void deletenode(int i,listnode *head,int n);//i代表要刪除的位置,head代表頭結點,n代表鍊錶長度
void deletenode(int i,listnode *head,int n)
else
//刪除結點
p->next=q;
p->next=q->next;
//釋放被刪除結點的記憶體
free(q); }
//列印鍊錶
void print(listnode * head);
void print(listnode * head)
單鏈表的最大缺點就是:每次進行操作都要從頭結點開始,只能向後查詢,為了解決單鏈表的缺陷,資料結構中加入了雙鏈表的概念,本部落格將在最近對雙鏈表進行剖析;
以上**及觀點如果存在錯誤,還望指正。
單鏈表 建立插入刪除
建立乙個工程,在其中新增 list.h 標頭檔案,list.cpp原始檔和main.cpp原始檔。標頭檔案list.h中進行資料型別抽象 adt 宣告了乙個結構體和對應的操作,如下 ifndef list h define list h typedef struct list list 函式宣告 l...
單鏈表的建立 插入 刪除
單鏈表的初始化 建立 插入 查詢 刪除 include include typedef int elemtype 定義結點型別 typedef struct node node,linkedlist 單鏈表的初始化 linkedlist linkedlistinit l next null 將nex...
單鏈表的建立 插入 刪除
建立乙個節點 typedef struct node link 建立鍊錶 首先head 這個變數指向第乙個節點,然後讓temp1 指向每次建立的knot1節點。簡單來說就是 knot1 開闢節點,temp1儲存每次開闢的節點。num 節點個數 link createlist link head,in...