函式順序依次為單鏈表的建立(頭插和尾插法),初始化,判空,遍歷,求鍊錶長度,按值查詢,按位查詢,插入,刪除,銷毀操作
並且在主函式中舉例說了鍊錶的建立,遍歷,求長,刪除,插入操作;
高階操作:
c迴圈鍊錶
#include #include typedef int datatype; //用datatype 替代 int方便修改資料型別
typedef struct nodenode;
//建立單鏈表(尾插法)
//比如說資料1 2 3 4 5
//鍊錶中從頭指標開始資料順序為1 2 3 4 5
//每次從鍊錶末尾插入
node *creattaillist(datatype a,int n)
r -> next = null; //終端結點指標指向null
return first;
}//建立單鏈表(頭插法)
//比如說資料1 2 3 4 5
//鍊錶中從頭指標開始資料順序為5 4 3 2 1
//每次從鍊錶頭部插入
node *creatheadlist(datatype a,int n)
return first;
}//鍊錶初始化
node *initlist()
//判斷空是否為空鍊錶
int empty(node *first)
//遍歷
void printlist(node*first)
}//求鍊錶長度
int length(node*first)
return cnt;
}//按值查詢,查詢失敗返回0,成功返回資料所在位置
int locale(node *first,int x)
return 0;
}//按位查詢,失敗返回0,成功返回指向第x個資料的指標ptr
int get(node *first,int x,datatype *ptr)
if(p == null)
return 0;
*ptr = p->data;
return 1;
}//插入
int insert(node *first,int x,datatype t)
if(p == null )
s = (node*)malloc(sizeof(node));//請求分配空間 .
s -> data = t; //申請乙個結點,資料域為x
s -> next = p -> next; //將結點s插入到結點p之後
p -> next = s;
return 1;
}//刪除某一位置的結點
int delete(node *first,int i,datatype *ptr)
if(p == null || p-> next == null)
q = p -> next;
*ptr = q -> data; //刪除失敗的值
p -> next = q -> next;
free(q);
return 1;
}//銷毀
void destroylist(node *first)
}int main()
; int x,n;
n = sizeof(data)/sizeof(data[0]);//求出陣列data中元素個數
first = creattaillist(data,n);//尾插
printf("after creat,the data is: ");
printlist(first);
printf("\n");
if(delete(first,3,&x))
else
printf("delete defult\n");
if(insert(first,2,7))
else
printf("insert defult\n");
printf("the list length is: %d",length(first));
return 0;
}
C單鏈表操作
今天面試給 宇龍酷派 鄙視了。我想說,其實鍊錶反轉我會!單鏈表 初始化 建立 顯示 刪除 插入特定位置 刪除特定位置 反轉操作。include include include include typedef struct student node 初始化 node initnode head nex...
C單鏈表操作
頭指標存放鍊錶元素數量,頭節點開始存放資料,尾節點指向null list.h ifndef list h define list h include include define debug 0typedef struct nodenode node l malloc 分配記憶體 node init...
C單鏈表的操作
單鏈表的建立 刪除結點 插入新結點 遍歷但鍊錶。很多不足之處,希望多多提意見改正 1 鍊錶 1 單鏈表的建立 首先建立乙個節點,將頭結點 q臨時節點 建立節點p。都指向這個節點。接下來迴圈建立鍊錶的每個節點,為了實現人機互動,最好在建立每個節點的時候都詢問是否建立節點,建立下乙個單獨節點結束之後。然...