c语言数据结构的练习
2017-12-18 19:10
337 查看
http://blog.csdn.net/men_wen/article/details/52877331?locationNum=14&fps=1
======
=====
===比较标准的结构体初始化===
#include<stdio.h> #include<stdlib.h> /* c语言数据结构的练习 1.单链表 */ typedef struct node { int data; //数据域 struct node *next; //指针域 }NODE; //初始化一个节点 NODE* initnode(NODE *pnode, int data) { pnode = (NODE *)malloc(sizeof(NODE)); pnode->data = data;//初始化数据域 pnode->next = NULL;//初始化指针域为NULL return pnode; } int main() { //单链表 struct node *head; //这里为什么传入指针的地址,注意体会 ,为什么要返回结构体指针 head = initnode(&head, 100); struct node *first; first = initnode(&first, 200); struct node *Second; Second = initnode(&Second, 300); head->next = first; first->next = Second; printf("%d %d %d",head->data,head->next->data,head->next->next->data); return 0; }
======
#include<stdio.h> #include<stdlib.h> /* c语言数据结构的练习 1.单链表 */ typedef struct node { int data; //数据域 struct node *next; //指针域 }NODE; //初始化一个节点 NODE* initnode(NODE *pnode, int data) { printf("=%d\n",pnode); pnode = (NODE*)malloc(sizeof(NODE)); pnode->data = data;//初始化数据域 pnode->next = NULL;//初始化指针域为NULL return pnode; } //向链表的结尾添加一个节点 NODE * addToLast(NODE *head,NODE *last) { NODE *first = head; while (first->next != NULL) { first = first->next; } first->next = last; } int main() { ///创建头结点 NODE *head = initnode(&head, 100); printf("=%d\n", head); ////创建第一个子节点 NODE *first = initnode(&first, 200); //printf("%d", first->data); NODE *second = initnode(&second, 300); NODE *three = initnode(&three, 400); NODE *four = initnode(&four, 500); NODE *five = initnode(&five, 600); NODE *t; NODE *tt; //添加节点到链表 addToLast(head, first); addToLast(head, second); addToLast(head, three); addToLast(head, four); addToLast(head, five); return 0; }
=====
typedef struct node { int data; //数据域 struct node *next; //指针域 }NODE; struct { int a; char b; float c; } x; int main() { NODE t1; t1.data = 100; printf("%d\n", t1.data);//输出100 NODE t2; t2.data = 200; //结构体变量之间的赋值 t2 = t1; printf("%d\n", t2.data);//输出100 //创建一个结构体指针变量,需要malloc创建空间,才能使用 NODE *s1; NODE *s2 = (NODE*)malloc(sizeof(NODE)); s2->data = 300; printf("%d\n", s2->data);//输出300 NODE *s3 = (NODE*)malloc(sizeof(NODE)); s3->data = 400; printf("%d\n", s3->data);//输出400 ////由此可以结构体指针变量的赋值,就是将结构体指针变量存储的地址赋值给另一个变量 s3 = s2; printf("%d\n", s3->data);//输出300 return 0; }
===比较标准的结构体初始化===
#include<stdio.h> #include<stdlib.h> #include <memory.h> #define RES_OK 0 #define RES_FAILD -1 typedef struct node { int data; //数据域 struct node *next; //指针域 }NODE; //int initnode(NODE **pnode, int data) //{ // //printf("=%d\n",pnode); // *pnode = (NODE*)malloc(sizeof(NODE)); // if (!*pnode) // return RES_FAILD; ///* // void *memset(void *s, char ch, unsigned n); // 功能:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定, // 这个函数通常为新申请的内存做初始化工作。 //*/ // memset(*pnode, 0, sizeof(NODE)); // (*pnode)->data = data;//初始化数据域 // (*pnode)->next = NULL;//初始化指针域为NULL // return RES_OK; // // /*NODE *head = NULL; // if (!initnode(&head, 100)) // { // ... // }*/ //} int initnode(void **pnode, int data)////申明一个任意类型的指向指针变量的指针,一个data , ////调用initnode(&tt, 100);,任意类型的指针变量pnode的值存储结构体指针的tt的地址,pnode指向tt { NODE *pstNode = NULL;////申明一个空的结构体指针变量 //printf("pstNode: %d\n", pstNode); pstNode = (NODE*)malloc(sizeof(NODE)); //printf("pstNode: %d\n", pstNode); if (!pstNode) return RES_FAILD; /* void *memset(void *s, char ch, unsigned n); 功能:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定, 这个函数通常为新申请的内存做初始化工作。 */ memset(pstNode, 0, sizeof(NODE)); pstNode->data = data;//初始化数据域 pstNode->next = NULL;//初始化指针域为NULL *pnode = pstNode; return RES_OK; } int main() { //NODE *tt;//申明结构体指针变量 ////printf("tt: %d\n", tt); //initnode(&tt, 100);//传入结构体指针变量的地址和结构体data的数值 //printf("%d\n", tt); NODE t1; t1.data = 100; printf("%d\n", t1);//输出100 NODE *p; p = &t1; printf("%d\n",p); printf("%d\n", p->data); NODE t2; t2.data = 200; //结构体变量之间的赋值 t2 = t1; printf("%d\n", t2.data);//输出100 //创建一个结构体指针变量,需要malloc创建空间,才能使用 NODE *s1; NODE *s2 = (NODE*)malloc(sizeof(NODE)); s2->data = 300; printf("%d\n", s2->data);//输出300 NODE *s3 = (NODE*)malloc(sizeof(NODE)); s3->data = 400; printf("%d\n", s3->data);//输出400 ////由此可以结构体指针变量的赋值,就是将结构体指针变量存储的地址赋值给另一个变量 s3 = s2; printf("%d\n", s3->data);//输出300 return 0; }
相关文章推荐
- 黑马程序员——C语言基础——结构体相关练习
- 数据结构专项练习--数组3.1
- java语言的科学与艺术-编程练习Hailstone
- 数据结构练习(01)把二元查找树转变成排序的双向链表
- GO 语言数据结构:Interfaces
- C语言数据结构----算法基本知识和静态表
- 数据结构(java语言描述)模式匹配——KMP算法
- java语言的科学与艺术-编程练习---简单的四则运算计算器
- C程序设计语言练习1-16 修改打印最长文本行的程序的主程序main,使之可以打印任意长度的输入行的长度,并尽可能多的打印文本
- 数据结构练习-java
- soot基础 -- soot的数据结构与java语言的结构
- R 语言的六种数据结构
- oj1944: C语言实验——格式化输出(常量练习)
- 第05天OC语言(08):多个对象内存管理练习分析
- c语言数据结构实现后缀表达式求值
- 编程练习--不同语言输出九九乘法表
- C语言数据结构之循环队列
- GO语言练习:组合的用法
- 各程序语言基础语法练习-持续更新
- C语言数据结构(链表)单向链表的创建删除逆序