【数据结构】typedef struct 和 struct在链表中的应用
发布时间:2020-12-15 06:32:22 所属栏目:安全 来源:网络整理
导读:(1) struct{ int x; int y; }test1; 定义了 结构 test1,test1.x 和 test1.y 可以在语句里用了。(2) struct test {int x; int y; }test1; 定义了 结构 test1,test1.x 和 test1.y 可以在语句里用了。与 1 比,1里面省写 了 test(3) typedef struct test {int
(1) struct{ int x; int y; }test1; 定义了 结构 test1, test1.x 和 test1.y 可以在语句里用了。 (2) struct test {int x; int y; }test1; 定义了 结构 test1, test1.x 和 test1.y 可以在语句里用了。 与 1 比,1里面省写 了 test (3) typedef struct test {int x; int y; }text1,text2; 只说了 这种结构 的(类型)别名 叫 text1 或叫 text2 真正在语句里用,还要写: text1 hwh; 然后好用 hwh.x,hwh.y 或写 text2 hwh1; 然后好用 hwh.x,hwh.y (4)typedef struct {int x; int y; }test1; 同 (3)一样,真正在语句里用,还要 写: test1 hwh; 才能用 hwh.x 和 hwh.y (5)超高端用法 typedef struct list *list_p;//首先定义了一个结构体list,在这里要把struct list看成是一体了,继续分析
//在这里,list_p是一个结构体指针,struct list *就等同于list_p,这样做是可以在下面互相替换 //在定义结构list之前,定义了一个指向该结构的指针list_p,C语言允许定义指向不存在的类型的指针。 typedef struct list{
char a[3]; list_p link;//结构体自引用,这句话等同于struct list * link;。link是一个指向结构体的的指针
}; //在定义了结构list之后,就可以建立一个新表,用list_p ptr = Null;完成。
list_p ptr = Null;//存在一个名为ptr的新表ptr包含表的起始地址 ptr = (list_p) malloc(sizeof(list)); // //e->name 等同与(*e).name//e是指针 strcpy(ptr->a,"bat"); ptr->link = NULL; ----- 完整代码: #include<stdio.h> #include<stdlib.h> #include<string.h> main() { typedef struct list_node *list_pointer; typedef struct list_node { char data[4]; list_pointer link; }; list_pointer ptr = NULL; ptr = (list_pointer)malloc(sizeof(list_node)); strcpy(ptr->data,"bat"); ptr->link = NULL; printf("%sn",ptr->data); } #include<stdio.h> #include<stdlib.h> #define IS_Empty(ptr) (!(ptr)) #define IS_FULL(ptr) (!(ptr)) typedef struct list_node *list_pointer; typedef struct list_node { int data; list_pointer link; }; list_pointer ptr = NULL; list_pointer create() { list_pointer first = NULL,second = NULL; first = (list_pointer)malloc(sizeof(list_node)); second = (list_pointer)malloc(sizeof(list_node)); first->data = 10; first->link = second; second->data = 20; second->link = NULL; return first; } void insert(list_pointer *ptr,list_pointer node) { list_pointer temp; temp = (list_pointer) malloc (sizeof(list_node)); if(IS_FULL(temp)) { fprintf(stderr,"The memory is full.n"); exit(1); } temp->data = 50; if(*ptr) { temp->link = node->link; node->link =temp; } else { temp->link =NULL; *ptr = temp; } } void delete_node(list_pointer *ptr,list_pointer trail,list_pointer node) { if(trail) { trail->link = node->link; } else { *ptr = (*ptr)->link; } free(node); } void print_list(list_pointer ptr) { printf("Thw list contains:n"); for(; ptr; ptr=ptr->link) { printf("%4d",ptr->data); } printf("n"); } void main() { ptr = create(); insert(&ptr,ptr->link); printf("After insert--------------------------n"); print_list(ptr); delete_node(&ptr,ptr,ptr->link); printf("After delete--------------------------n"); print_list(ptr); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |