1. 程式人生 > 實用技巧 >7.5_連結串列_頭插法

7.5_連結串列_頭插法

#include <stdio.h>
#include <stdlib.h>
//建立連結串列,用尾插法賦值
//資料域採用陣列的各元素的值

//結點
struct linkNode{
    int data;
    struct linkNode *next;
};

//列印連結串列資料域
void output(struct linkNode *head);

//頭插法
struct linkNode *creat_link_list(int a[], int n);

int main() {

    int a[6];
    struct linkNode *head;  //
頭指標 printf("輸入陣列各元素的值【6個】:\n"); for(int i=0; i<6; i++){ scanf("%d", &a[i]); } head = creat_link_list(a, 6); printf("此連結串列各個節點的資料域為:\n"); output(head); return 0; } //頭插法 struct linkNode *creat_link_list(int a[], int n){ struct linkNode *h = NULL; //新建連結串列h,將每個結點依次插入到鏈尾,將連結串列的頭指標返回
struct linkNode *s; //s指向要插入的結點 struct linkNode *r; //r指向連結串列尾結點 for(int i=0; i<n; i++){ s = (struct linkNode *)malloc(sizeof(struct linkNode)); s->data = a[i]; s->next = NULL; if(h == NULL){ h = s; }else{ r
->next = s; } r = s; //r指向當前連結串列的尾結點 } return h; //返回連結串列頭指標 } //列印連結串列資料 void output(struct linkNode *head){ struct linkNode *p = head; while (p){ printf("%d ", p->data); p = p->next; } printf("\n"); }