高级会员

- 积分
- 585
- 金钱
- 585
- 注册时间
- 2020-5-25
- 在线时间
- 42 小时
|
#include<stdio.h> 2 #include<stdlib.h> 3 typedef struct student{ 4 int score; 5 struct student *next; 6 }LinkList; 7 //初始化链表 8 LinkList *create(int n){//n是链表节点个数 9 LinkList *head,*node,*end;//头指针,普通指针,尾指针10 head = (LinkList*)malloc(sizeof(LinkList));11 end = head;//空链表,头指针和尾指针此时相同 12 for(int i=0;i<n;i++){13 node = (LinkList*)malloc(sizeof(LinkList));//每次都分配地址14 scanf("%d",&node->score);15 end->next = node;//建立尾节点与新节点的联系 16 end = node;//尾节点后移 17 } 18 end->next = NULL;//结束创建19 return head;//返回一整个链表 20 } 21 //修改第n个节点的值22 void change(LinkList *list,int n){23 LinkList *t = list;24 int i=0;25 //遍历至第n个节点26 while(i<n&&t!=NULL){27 t=t->next;28 i++;29 } 30 if(t!=NULL){31 puts("输入要修改的值");32 scanf("%d",&t->score); 33 }else{34 puts("节点不存在");35 }36 } 37 //删除第n个节点38 39 void delet(LinkList *list,int n){40 LinkList *t = list,*p;41 int i=0;42 while(i<n&&t!=NULL){43 p=t;44 t=t->next;45 i++;46 }47 if(t!=NULL){48 p->next=t->next;49 free(t);50 }else{51 puts("节点不存在");52 }53 } 54 //在第n个节点插入新节点55 void insert(LinkList *list,int n){56 LinkList *t = list,*p;57 int i=0;58 while(i<n&&t!=NULL){59 t=t->next;60 i++;61 }62 if(t!=NULL){63 p = (LinkList*)malloc(sizeof(LinkList));64 puts("输入要插入的值");65 scanf("%d",&p->score);66 p->next=t->next;67 t->next=p;68 }else{69 puts("节点不存在");70 }71 } 72 //打印链表73 void print(LinkList *list){74 LinkList *t = list;75 while(t->next != NULL){76 t=t->next;77 printf("%d ",t->score);78 }79 } 80 int main(){81 int n;82 scanf("%d",&n);83 LinkList *p = create(n);84 print(p);85 change(p,5);86 print(p);87 88 delet(p,2);89 print(p);90 delet(p,11);91 insert(p,1);92 print(p);93 94 return 0;95 }
注意点:delete是c中的关键字,函数名不要取作delete[size=18.6667px]有相同爱好的可以进来一起讨论哦:企鹅群号:1046795523学习视频资料:http://www.makeru.com.cn/live/1392_1164.html?s=143793
|
|