- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11章 结构体与共用体 11.1 结构体 11.2 结构体变量的定义 定义结构体类型的同时定义结构体变量 一般形式: 11.3 结构体变量的引用 引用规则 结构体变量不能整体引用,只能引用变量成员 11.4 结构体变量的初始化 形式一: 结构体数组初始化 11.6 结构体和指针 指向结构体变量的指针 定义形式:struct 结构体名 *结构体指针名; 指向结构体数组的指针 11.8 共同体 构造数据类型,也叫联合体 用途:使几个不同类型的变量共占一段内存(相互覆盖) 共用体类型定义 定义形式: typedef定义类型步骤 按定义变量方法先写出定义体 如 int i; 将变量名换成新类型名 如 int INTEGER; 最前面加typedef 如 typedef int INTEGER; 用新类型名定义变量 如 INTEGER i,j; 输出链表 要知道链表第一个结点的地址,即要知道head的值; 设一个指针变量P,先指向第一个结点,输出P所指的结点; 使P后移一个结点,再输出,直到链表的尾结点。 void print(head) struct student *head; { struct student *p; printf (“\n Now, These %d records are: \n”,n); p=head; if (head!=NULL) do { printf(%ld %5.1f\n”,p-num,p-score); p=p-next; } while (p!=NULL); } 对链表的删除操作 从链表删除一个结点,只是将其从链表中分离出来,改变连接关系。其数据仍然在内存中。 A B D C E A B D C E struct student *del(head,num) struct student *head; long num; {struct student *p1,*p2; if (head==NULL) {printf(\nlist null!\n); return (head);} p1=head; while (num!=p1-num p1-next!=NULL) /*P1指向的不是所要找的结点,并且后面还有结点*/ {p2=p1;p1=p1-next;} /* P1后移一个结点*/ if(num==p1-num) /* 找到了*/ { if (p1==head) head=p1-next; /*若 P1指向的是首结点,把第二个结点地址赋予head*/ else p2-next=p1-next; /* 否则将下一个结点地址赋给前一个结点地址*/ printf(delete:%ld\n,num); n=n-1; } else printf(“%ld not been found!\n”,num); /* 找不到该结点*/ return (head); } 对链表的插入操作 假设已有链表各结点中的成员项num是按由小到大顺序排列的。 [例10]:插入结点函数insert struct student *insert(head,stud) struct student *head,*stud; { struct student *p0,*p1,*p2; p1=head; /*使 P1指向第一个结点*/ p0=stud; /*P0指向要插入的结点*/ if (head= =NULL) {head=p0;p0-next=NULL;} /*使 P0指向的结点作头结点*/ else { while ((p0-nump1-num) (p1-next!=NULL)) {p2=p1;p1=p1-next;} if (p0-num=p1-num) { if (head==p1) head=p0; /*插到原来第一个结点之前*/
文档评论(0)