二维数组的指针怎么定义_指针二维数组的各种表示

二维数组的指针怎么定义_指针二维数组的各种表示C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表#include<stdio.h>#define NULL 0#define LEN sizeof(struct student) /*定义节点的长度*/

C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表   #include<stdio.h> #define NULL 0 #define LEN sizeof(struct student) /*定义节点的长度*/ #define NODE struct student struct student { char no[5]; float score; struct student *next; }; struct student *create(void); void printlist(struct student *head); NODE * insert(NODE *head, NODE *new, int i); NODE * dellist(NODE *head,char no[]); void main(){ struct student *a; struct student test1={“abc”,1.0,NULL}; struct student *test2; a = create(); printf(“insert new node   ”); test2 = &test1; a = insert(a,test2,2); printlist(a); printf(“delete node   ”); a = dellist(a,”2″); printlist(a); getch(); } /*创建一个具有头结点的单链表,返回单链表的头指针*/ struct student *create(void){ struct student *head = NULL, *new1, *tail; int count = 0; for(;;) { new1 = (struct student *)malloc(LEN); /*申请一个新结点的空间*/ printf(“Input the number of student No.%d(5bytes): “,count + 1); scanf(“%5s”,new1->no); if(strcmp(new1->no, “*”) == 0) /*这里不用加取址符号,因为no就表示数组的首地址*/ { free(new1); /*释放最后申请的结点空间*/ break; /*结束for语句*/ } printf(“Input the score of the student No.%d: “,count + 1); scanf(“%f”,&new1->score); count++; /*将新结点插入到链表尾,并设置新的尾指针*/ if(count == 1){ head = new1; /*是第一个结点,置头指针*/ } else tail->next = new1; /*不是第一个结点,将新结点插入到链表尾*/ tail = new1; /*设置新的尾结点*/ } /*置新结点的指针域为空*/ new1->next = NULL; return(head); } /*输出链表*/ void printlist(struct student *head){ struct student *p; p = head; if(head == NULL) { printf(“List is empty!!!   ”); } else { while(p!=NULL){ printf(“%5s %4.1f   ”, p->no,p->score); p = p->next; } } } /*插入链表结点*/ NODE * insert(NODE *head, NODE *new, int i){ NODE *pointer; /*将新结点插入到链表中*/ if(head == NULL){ head = new; new->next = NULL; } else { if(i == 0){ new -> next = head; head = new; } else { pointer = head; /*查找单链表的第i个结点(pointer指向它)*/ for(;pointer != NULL && i > 1; pointer = pointer->next,i–); if(pointer == NULL) printf(“Out of the range,can’t insert new node!   ”); else { /*一般情况下pointer指向第i个结点*/ new -> next = pointer->next; pointer->next = new; } } } return(head); } /*删除链表*/ NODE * dellist(NODE *head,char no[]){ NODE *front; /*front表示要删除结点的前一个结点*/ NODE *cursor; /*cursor表示当前要删除的结点*/ if(head == NULL) { /*空链表*/ printf(”   List is empty   ”); return(head); } if(strcmp(head->no,no == 0)){ /*要删除的结点是表头结点*/ front = head; head = head->next; free(front); } else { /*非表头结点*/ front = head; cursor = head->next; /*通过循环移动到要删除的结点的位置*/ while(cursor != NULL && strcmp(cursor->no,no) != 0) { front = cursor; cursor = cursor ->next; } if(cursor != NULL){ /*找到需要删除的结点进行删除操作*/ front->next = cursor->next; free(front); } else { printf(“%5s has not been found!”,*no); } } return(head); }

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/60449.html

(0)
上一篇 2024年 8月 29日
下一篇 2024年 8月 29日

相关推荐

关注微信