日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言數據結構之單鏈表的查找和建立_C 語言

作者:程序喵正在路上 ? 更新時間: 2022-11-12 編程語言

單鏈表的查找

其實在單鏈表的插入和刪除中,我們已經使用過單鏈表的查找方法,因為插入和刪除的前提都是先找到對應的結點,所以這里就不再多解釋

按位查找

GetElem(L, i):按位查找操作。獲取表 L 中第 i 個位置的元素的值

//按位查找
LNode * GetElem(LinkList L, int i) {
	if (i < 0) return false;

	LNode *p;		//指針p指向當前掃描到的結點
	int j = 0;		//當前p指向的是第幾個結點
	p = L;			//L指向頭結點,頭結點是第 0 個結點

	//循環找到第 i-1 個結點
	while (p != NULL && j < i) {
		p = p->next;
		j++;
	}
	return p;
}

按值查找

LocateElem(L, e):按值查找操作。在表 L 中查找具有給定關鍵字值的元素

//按值查找
LNode * LocateElem(LinkList L, ElemType e) {
    LNode *p = L->next;
    //從第1個結點開始查找數據域為e的結點
    while (p && p->data != e) {
        p = p->next;
    }
    return p;

單鏈表的建立

如果給你很多個數據元素(ElemType),要把它們存到一個單鏈表里面,怎么操作呢?

第一步:初始化一個單鏈表

第二步:每次取一個數據元素,插入到表尾/表頭

尾插法

算法步驟:

1.創建一個只有頭結點的空鏈表

2.尾指針 r 初始化,指向頭結點

3.接收用戶輸入的值,判斷是否結束插入,不結束則插入表中

  • 創建新結點 *s
  • 將用戶輸入的值賦給新節點 *s 的數據域
  • 將新節點 *s 插入到尾結點 *r 之后
  • 尾指針 r 指向新的尾結點 *s
  • 用戶繼續輸入
//尾插法建立單鏈表
LinkList List_TailInsert(LinkList &L) {
    int x;        //假設ElemType為整型        
    L = (LinkList)malloc(sizeof(LNode));    //建立頭結點
    LNode *s, *r = L;        //r為表尾指針
    scanf("%d", &x);        //輸入結點的值
    while (x != 9999) {        //輸入9999表示結束
        s = (LNode *)malloc(sizeof(LNode));
        s->data = x;
        r->next = s;
        r = s;                //r指向新的表尾結點
        scanf("%d", &x);
    }
    r->next = NULL;        //尾結點指針置空
    return L;
}

頭插法建立單鏈表

算法步驟:

1.創建一個只有頭結點的空鏈表

2.接收用戶輸入的值,判斷是否結束插入,不結束則插入表中

  • 創建新結點 *s
  • 將用戶輸入的值賦給新節點 *s 的數據域
  • 將新節點 *s 插入到頭結點之后
  • 用戶繼續輸入
//頭插法建立單鏈表
LinkList List_HeadInsert(LinkList &L) {
    LNode *s;
    int x;        //假設ElemType為整型        
    L = (LinkList)malloc(sizeof(LNode));    //建立頭結點
    L->next = NULL;
    scanf("%d", &x);        //輸入結點的值
    while (x != 9999) {        //輸入9999表示結束
        s = (LNode *)malloc(sizeof(LNode));
        s->data = x;
        s->next = L->next;
        L->next = s;
        scanf("%d", &x);
    }
    return L;
}

記得 L->next = NULL; 這一句不能漏了,不然會出問題

原文鏈接:https://blog.csdn.net/weixin_62511863/article/details/126981080

欄目分類
最近更新