首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言實例練習

C語言練習實例72:單鏈表創建與遍歷(帶頭節點)

     編輯:C 語言實例練習

C語言練習實例72:單鏈表創建與遍歷(帶頭節點)

本實例與實例73代碼完全相同,演示帶頭節點的單鏈表創建(尾插法)及正序遍歷打印。

程序要點

  • 頭節點 L 不存儲數據,next 指向首個數據節點。
  • 尾指針 q 始終指向當前最後節點,新節點接在 q->next,再移動 q。
  • print 從 h->next 開始遍歷,避開頭節點。

源代碼

// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鳥教程. All rights reserved.
//
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

typedef struct LNode {
    int data;
    struct LNode *next;
} LNode, *LinkList;

LinkList CreateList(int n);
void print(LinkList h);

int main() {
    LinkList Head = NULL;
    int n;
    scanf("%d", &n);
    Head = CreateList(n);
    printf("剛剛建立的各個鏈表元素的值為:\n");
    print(Head);
    printf("\n\n");
    system("pause");
    return 0;
}

LinkList CreateList(int n) {
    LinkList L, p, q;
    int i;
    L = (LNode*)malloc(sizeof(LNode));
    if (!L) return 0;
    L->next = NULL;
    q = L;
    for (i = 1; i <= n; i++) {
        p = (LinkList)malloc(sizeof(LNode));
        printf("請輸入第%d個元素的值:", i);
        scanf("%d", &(p->data));
        p->next = NULL;
        q->next = p;
        q = p;
    }
    return L;
}

void print(LinkList h) {
    LinkList p = h->next;
    while (p != NULL) {
        printf("%d ", p->data);
        p = p->next;
    }
}

運行示例

3
請輸入第1個元素的值:10
請輸入第2個元素的值:20
請輸入第3個元素的值:30
剛剛建立的各個鏈表元素的值為:
10 20 30
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved