单向循环链表

来源:互联网 发布:数据库管理dba 编辑:程序博客网 时间:2024/05/22 04:40

带头节点(指向头节点的指针header不能改变地址!!!)
每次输入数据都要重新找回最后一个节点,在输出数据时,要把最后一个节点的next指向null

#include <stdio.h>#include <stdlib.h>typedef struct link {    int data;    struct link* next;} node;void builddoublelink(node** header) {    int data;    printf("input data end with -1:\n");    scanf("%d", &data);    node* new_node;    while (data != -1) {        if (*header == NULL) {            new_node = (node*)malloc(sizeof(node));            new_node->data = data;            *header = new_node;            new_node->next = *header;        } else {            new_node = (node*)malloc(sizeof(node));            new_node->data = data;            node* last_node = *header;            while (last_node->next != *header) {                last_node = last_node->next;            }            last_node->next = new_node;            new_node->next = *header;        }        scanf("%d", &data);    }}void print(node* header) {    node* last_node = header;    last_node = last_node->next;    while (last_node->next != header) {        last_node = last_node->next;    }    last_node->next = NULL;    node* now_node = header;    node* temp;    while (now_node != NULL) {        printf("%d ", now_node->data);        temp = now_node;        now_node = now_node->next;        free(temp);    }}int main(){    node* header = NULL;    builddoublelink(&header);    print(header);    return 0;}
0 0
原创粉丝点击