写一个函数insert,用来向一个动态链表插入节点。
写一个函数insert,用来向一个动态链表插入节点。
方法一:
#include <stdio.h>
#include <stdlib.h>struct Student
{ //声明结构体(双向链表结构体)int num;float score;struct Student *prev;struct Student *next;
};struct Student *input(); //声明输入函数
struct Student *insert(struct Student **stu, int m, char direc, struct Student *ins); //声明插入函数
void print(struct Student *stu); //声明输出函数int main()
{struct Student *stud, in, *inser; //定义结构体指针,插入的结构体变量,指向插入结构体变量的指针int insert_num; //定义要插入的结点学号char dir; //定义前插后插的方向变量stud=input(); //调用输入函数print(stud); //输出全部数据printf("Please enter insert student info: "); //输入要插入的学生数据(学号和成绩)scanf("%d %f", &in.num, &in.score);getchar();inser=∈ //结构体变量指针指向inprintf("Please enter insert num: "); //输入要插入哪个学号scanf("%d", &insert_num);getchar();printf("Please enter F or B: "); //输入是要插入学号前还是后,F是前插,B是后插。scanf("%c", &dir);getchar();stud=insert(&stud, insert_num, dir, inser); //调用插入函数,并把返回值head赋值给stud print(stud);return 0;
}//输入函数
struct Student *input()
{struct Student *p1, *p2, *head;int n=0;p1=p2=(struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n+1);scanf("%d %f", &p1->num, &p1->score);getchar();head=NULL;while (p1->num!=0){n++;if (n==1){head=p1;p1->prev=NULL;}else{p2->next=p1;p1->prev=p2;}p2=p1;p1=(struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n+1);scanf("%d %f", &p1->num, &p1->score);getchar();}p2->next=NULL;return head;
}//插入函数
struct Student *insert(struct Student **stu, int m, char direc, struct Student *ins)
{struct Student *p, *head;for (p=*stu, head=p; p!=NULL; p=p->next){if (p->num==m){if (direc=='F'){if (p==head)//若为第一个结构体数组 {ins->next=p;ins->prev=NULL;head->prev=ins;head=ins;}else{ins->prev=p->prev;p->prev->next=ins;ins->next=p;p->prev=ins;}}else if (direc=='B'){if (p->next==NULL)//若为最后一个结构体数组 {p->next=ins;ins->next=NULL;ins->prev=p;}else{ins->next=p->next;p->next=ins;ins->prev=p;}}}}return head;//返回值为head
}//输出函数
void print(struct Student *stu)
{struct Student *p;printf("Output Result:\n");for (p=stu; p!=NULL; p=p->next){printf("%d %.2f\n", p->num, p->score);}
}
在VS2019下,需将源文件的scanf做些修改:
#include <stdio.h>
#include <stdlib.h>struct Student
{ //声明结构体(双向链表结构体)int num;float score;struct Student* prev;struct Student* next;
};struct Student* input(); //声明输入函数
struct Student* insert(struct Student** stu, int m, char direc, struct Student* ins); //声明插入函数
void print(struct Student* stu); //声明输出函数int main()
{struct Student* stud, in, * inser; //定义结构体指针,插入的结构体变量,指向插入结构体变量的指针int insert_num; //定义要插入的结点学号char dir; //定义前插后插的方向变量stud = input(); //调用输入函数print(stud); //输出全部数据printf("Please enter insert student info: "); //输入要插入的学生数据(学号和成绩)scanf_s("%d %f", &in.num, &in.score);getchar();inser = ∈ //结构体变量指针指向inprintf("Please enter insert num: "); //输入要插入哪个学号scanf_s("%d", &insert_num);getchar();printf("Please enter F or B: "); //输入是要插入学号前还是后,F是前插,B是后插。scanf_s("%c", &dir, (unsigned int)sizeof(char));getchar();stud = insert(&stud, insert_num, dir, inser); //调用插入函数,并把返回值head赋值给stud print(stud);return 0;
}//输入函数
struct Student* input()
{struct Student* p1, * p2, * head;int n = 0;p1 = p2 = (struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n + 1);scanf_s("%d %f", &p1->num, &p1->score);getchar();head = NULL;while (p1->num != 0){n++;if (n == 1){head = p1;p1->prev = NULL;}else{p2->next = p1;p1->prev = p2;}p2 = p1;p1 = (struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n + 1);scanf_s("%d %f", &p1->num, &p1->score);getchar();}p2->next = NULL;return head;
}//插入函数
struct Student* insert(struct Student** stu, int m, char direc, struct Student* ins)
{struct Student* p, * head;for (p = *stu, head = p; p != NULL; p = p->next){if (p->num == m){if (direc == 'F'){if (p == head)//若为第一个结构体数组 {ins->next = p;ins->prev = NULL;head->prev = ins;head = ins;}else{ins->prev = p->prev;p->prev->next = ins;ins->next = p;p->prev = ins;}}else if (direc == 'B'){if (p->next == NULL)//若为最后一个结构体数组 {p->next = ins;ins->next = NULL;ins->prev = p;}else{ins->next = p->next;p->next = ins;ins->prev = p;}}}}return head;//返回值为head
}//输出函数
void print(struct Student* stu)
{struct Student* p;printf("Output Result:\n");for (p = stu; p != NULL; p = p->next){printf("%d %.2f\n", p->num, p->score);}
}
方法二:
#include <stdio.h>
#include <stdlib.h>struct Student
{ //声明结构体(双向链表结构体)int num;float score;struct Student *prev;struct Student *next;
};struct Student *input(); //声明输入函数
void insert(struct Student **stu, int m, char direc, struct Student *ins); //声明插入函数
void print(struct Student *stu); //声明输出函数int main()
{struct Student *stud, in, *inser; //定义结构体指针,插入的结构体变量,指向插入结构体变量的指针int insert_num; //定义要插入的结点学号char dir; //定义前插后插的方向变量stud=input(); //调用输入函数print(stud); //输出全部数据printf("Please enter insert student info: "); //输入要插入的学生数据(学号和成绩)scanf("%d %f", &in.num, &in.score);getchar();inser=∈ //结构体变量指针指向inprintf("Please enter insert num: "); //输入要插入哪个学号scanf("%d", &insert_num);getchar();printf("Please enter F or B: "); //输入是要插入学号前还是后,F是前插,B是后插。scanf("%c", &dir);getchar();insert(&stud, insert_num, dir, inser); //调用插入函数print(stud);return 0;
}//输入函数
struct Student *input()
{struct Student *p1, *p2, *head;int n=0;p1=p2=(struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n+1);scanf("%d %f", &p1->num, &p1->score);getchar();head=NULL;while (p1->num!=0){n++;if (n==1){head=p1;p1->prev=NULL;}else{p2->next=p1;p1->prev=p2;}p2=p1;p1=(struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n+1);scanf("%d %f", &p1->num, &p1->score);getchar();}p2->next=NULL;return head;
}//插入函数
void insert(struct Student **stu, int m, char direc, struct Student *ins)
{struct Student *p, *head, *front=NULL, *back=NULL;for (head=*stu, p=head; p!=NULL; p=p->next) {if (p->num==m) {if (direc=='F') {front=p->prev;back=p;}else if (direc=='B') {front=p;back=p->next;}if(head==back)head=ins;if(front!=NULL)front->next=ins;if(back!=NULL)back->prev=ins;ins->prev=front;ins->next=back;}}*stu=head;//因为stu指向stud,所以把head赋值给del函数里的*stu就是赋值给主函数main的stud
}//输出函数
void print(struct Student *stu)
{struct Student *p;printf("Output Result:\n");for (p=stu; p!=NULL; p=p->next){printf("%d %.2f\n", p->num, p->score);}
}
在VS2019下,需将源文件的scanf做些修改:
#include <stdio.h>
#include <stdlib.h>struct Student
{ //声明结构体(双向链表结构体)int num;float score;struct Student* prev;struct Student* next;
};struct Student* input(); //声明输入函数
void insert(struct Student** stu, int m, char direc, struct Student* ins); //声明插入函数
void print(struct Student* stu); //声明输出函数int main()
{struct Student* stud, in, * inser; //定义结构体指针,插入的结构体变量,指向插入结构体变量的指针int insert_num; //定义要插入的结点学号char dir; //定义前插后插的方向变量stud = input(); //调用输入函数print(stud); //输出全部数据printf("Please enter insert student info: "); //输入要插入的学生数据(学号和成绩)scanf_s("%d %f", &in.num, &in.score);getchar();inser = ∈ //结构体变量指针指向inprintf("Please enter insert num: "); //输入要插入哪个学号scanf_s("%d", &insert_num);getchar();printf("Please enter F or B: "); //输入是要插入学号前还是后,F是前插,B是后插。scanf_s("%c", &dir, (unsigned int)sizeof(char));getchar();insert(&stud, insert_num, dir, inser); //调用插入函数print(stud);return 0;
}//输入函数
struct Student* input()
{struct Student* p1, * p2, * head;int n = 0;p1 = p2 = (struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n + 1);scanf_s("%d %f", &p1->num, &p1->score);getchar();head = NULL;while (p1->num != 0){n++;if (n == 1){head = p1;p1->prev = NULL;}else{p2->next = p1;p1->prev = p2;}p2 = p1;p1 = (struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n + 1);scanf_s("%d %f", &p1->num, &p1->score);getchar();}p2->next = NULL;return head;
}//插入函数
void insert(struct Student** stu, int m, char direc, struct Student* ins)
{struct Student* p, * head, * front=NULL, * back=NULL;for (head = *stu, p = head; p != NULL; p = p->next){if (p->num == m){if (direc == 'F'){front = p->prev;back = p;}else if (direc == 'B'){front = p;back = p->next;}if (head == back)head = ins;if (front != NULL)front->next = ins;if (back != NULL)back->prev = ins;ins->prev = front;ins->next = back;}}*stu = head;//因为stu指向stud,所以把head赋值给del函数里的*stu就是赋值给主函数main的stud
}//输出函数
void print(struct Student* stu)
{struct Student* p;printf("Output Result:\n");for (p = stu; p != NULL; p = p->next){printf("%d %.2f\n", p->num, p->score);}
}
方法三:
#include <stdio.h>
#include <stdlib.h>struct Student
{ //声明结构体(双向链表结构体)int num;float score;struct Student *prev;struct Student *next;
};struct Student *input(); //声明输入函数
struct Student *insert(struct Student **stu, int m, char direc, struct Student *ins); //声明插入函数
void print(struct Student *stu); //声明输出函数int main()
{struct Student *stud, in, *inser; //定义结构体指针,插入的结构体变量,指向插入结构体变量的指针int insert_num; //定义要插入的结点学号char dir; //定义前插后插的方向变量stud=input(); //调用输入函数print(stud); //输出全部数据printf("Please enter insert student info: "); //输入要插入的学生数据(学号和成绩)scanf("%d %f", &in.num, &in.score);getchar();inser=∈ //结构体变量指针指向inprintf("Please enter insert num: "); //输入要插入哪个学号scanf("%d", &insert_num);getchar();printf("Please enter F or B: "); //输入是要插入学号前还是后,F是前插,B是后插。scanf("%c", &dir);getchar();stud=insert(&stud, insert_num, dir, inser); //调用插入函数,并把返回值head赋值给stud print(stud);return 0;
}//输入函数
struct Student *input()
{struct Student *p1, *p2, *head;int n=0;p1=p2=(struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n+1);scanf("%d %f", &p1->num, &p1->score);getchar();head=NULL;while (p1->num!=0){n++;if (n==1){head=p1;p1->prev=NULL;}else{p2->next=p1;p1->prev=p2;}p2=p1;p1=(struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n+1);scanf("%d %f", &p1->num, &p1->score);getchar();}p2->next=NULL;return head;
}//插入函数
struct Student *insert(struct Student **stu, int m, char direc, struct Student *ins)
{struct Student *p, *head, *front=NULL, *back=NULL;for (head=*stu, p=head; p!=NULL; p=p->next) {if (p->num==m) {if (direc=='F') {front=p->prev;back=p;}else if (direc=='B') {front=p;back=p->next;}if(head==back)head=ins;if(front!=NULL)front->next=ins;if(back!=NULL)back->prev=ins;ins->prev=front;ins->next=back;}}return head;//返回值为head
}//输出函数
void print(struct Student *stu)
{struct Student *p;printf("Output Result:\n");for (p=stu; p!=NULL; p=p->next){printf("%d %.2f\n", p->num, p->score);}
}
在VS2019下,需将源文件的scanf做些修改:
#include <stdio.h>
#include <stdlib.h>struct Student
{ //声明结构体(双向链表结构体)int num;float score;struct Student* prev;struct Student* next;
};struct Student* input(); //声明输入函数
struct Student* insert(struct Student** stu, int m, char direc, struct Student* ins); //声明插入函数
void print(struct Student* stu); //声明输出函数int main()
{struct Student* stud, in, * inser; //定义结构体指针,插入的结构体变量,指向插入结构体变量的指针int insert_num; //定义要插入的结点学号char dir; //定义前插后插的方向变量stud = input(); //调用输入函数print(stud); //输出全部数据printf("Please enter insert student info: "); //输入要插入的学生数据(学号和成绩)scanf_s("%d %f", &in.num, &in.score);getchar();inser = ∈ //结构体变量指针指向inprintf("Please enter insert num: "); //输入要插入哪个学号scanf_s("%d", &insert_num);getchar();printf("Please enter F or B: "); //输入是要插入学号前还是后,F是前插,B是后插。scanf_s("%c", &dir, (unsigned int)sizeof(char));getchar();stud = insert(&stud, insert_num, dir, inser); //调用插入函数,并把返回值head赋值给stud print(stud);return 0;
}//输入函数
struct Student* input()
{struct Student* p1, * p2, * head;int n = 0;p1 = p2 = (struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n + 1);scanf_s("%d %f", &p1->num, &p1->score);getchar();head = NULL;while (p1->num != 0){n++;if (n == 1){head = p1;p1->prev = NULL;}else{p2->next = p1;p1->prev = p2;}p2 = p1;p1 = (struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n + 1);scanf_s("%d %f", &p1->num, &p1->score);getchar();}p2->next = NULL;return head;
}//插入函数
struct Student* insert(struct Student** stu, int m, char direc, struct Student* ins)
{struct Student* p, * head, * front=NULL, * back=NULL;for (head = *stu, p = head; p != NULL; p = p->next){if (p->num == m){if (direc == 'F'){front = p->prev;back = p;}else if (direc == 'B'){front = p;back = p->next;}if (head == back)head = ins;if (front != NULL)front->next = ins;if (back != NULL)back->prev = ins;ins->prev = front;ins->next = back;}}return head;//返回值为head
}//输出函数
void print(struct Student* stu)
{struct Student* p;printf("Output Result:\n");for (p = stu; p != NULL; p = p->next){printf("%d %.2f\n", p->num, p->score);}
}
方法四:
#include <stdio.h>
#include <stdlib.h>struct Student
{ //声明结构体(双向链表结构体)int num;float score;struct Student *prev;struct Student *next;
};struct Student *input(); //声明输入函数
void insert(struct Student **stu, int m, char direc, struct Student *ins); //声明插入函数
void print(struct Student *stu); //声明输出函数int main()
{struct Student *stud, in, *inser; //定义结构体指针,插入的结构体变量,指向插入结构体变量的指针int insert_num; //定义要插入的结点学号char dir; //定义前插后插的方向变量stud=input(); //调用输入函数print(stud); //输出全部数据printf("Please enter insert student info: "); //输入要插入的学生数据(学号和成绩)scanf("%d %f", &in.num, &in.score);getchar();inser=∈ //结构体变量指针指向inprintf("Please enter insert num: "); //输入要插入哪个学号scanf("%d", &insert_num);getchar();printf("Please enter F or B: "); //输入是要插入学号前还是后,F是前插,B是后插。scanf("%c", &dir);getchar();insert(&stud, insert_num, dir, inser); //调用插入函数print(stud);return 0;
}//输入函数
struct Student *input()
{struct Student *p1, *p2, *head;int n=0;p1=p2=(struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n+1);scanf("%d %f", &p1->num, &p1->score);getchar();head=NULL;while (p1->num!=0){n++;if (n==1){head=p1;p1->prev=NULL;}else{p2->next=p1;p1->prev=p2;}p2=p1;p1=(struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n+1);scanf("%d %f", &p1->num, &p1->score);getchar();}p2->next=NULL;return head;
}//插入函数
void insert(struct Student **stu, int m, char direc, struct Student *ins)
{struct Student *p, *head, *front=NULL, *back=NULL;for (head=*stu, p=head; p!=NULL; p=p->next) {if (p->num==m) {if (direc=='F') {front=p->prev;back=p;}else if (direc=='B') {front=p;back=p->next;}if(head==back)head=ins;if(front!=NULL)front->next=ins;if(back!=NULL)back->prev=ins;ins->prev=front;ins->next=back;}}*stu=head;//因为stu指向stud,所以把head赋值给del函数里的*stu就是赋值给主函数main的stud
}//输出函数
void print(struct Student *stu)
{struct Student *p;printf("Output Result:\n");for (p=stu; p!=NULL; p=p->next){printf("%d %.2f\n", p->num, p->score);}
}
在VS2019下,需将源文件的scanf做些修改:
#include <stdio.h>
#include <stdlib.h>struct Student
{ //声明结构体(双向链表结构体)int num;float score;struct Student* prev;struct Student* next;
};struct Student* input(); //声明输入函数
void insert(struct Student** stu, int m, char direc, struct Student* ins); //声明插入函数
void print(struct Student* stu); //声明输出函数int main()
{struct Student* stud, in, * inser; //定义结构体指针,插入的结构体变量,指向插入结构体变量的指针int insert_num; //定义要插入的结点学号char dir; //定义前插后插的方向变量stud = input(); //调用输入函数print(stud); //输出全部数据printf("Please enter insert student info: "); //输入要插入的学生数据(学号和成绩)scanf_s("%d %f", &in.num, &in.score);getchar();inser = ∈ //结构体变量指针指向inprintf("Please enter insert num: "); //输入要插入哪个学号scanf_s("%d", &insert_num);getchar();printf("Please enter F or B: "); //输入是要插入学号前还是后,F是前插,B是后插。scanf_s("%c", &dir, (unsigned int)sizeof(char));getchar();insert(&stud, insert_num, dir, inser); //调用插入函数print(stud);return 0;
}//输入函数
struct Student* input()
{struct Student* p1, * p2, * head;int n = 0;p1 = p2 = (struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n + 1);scanf_s("%d %f", &p1->num, &p1->score);getchar();head = NULL;while (p1->num != 0){n++;if (n == 1){head = p1;p1->prev = NULL;}else{p2->next = p1;p1->prev = p2;}p2 = p1;p1 = (struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n + 1);scanf_s("%d %f", &p1->num, &p1->score);getchar();}p2->next = NULL;return head;
}//插入函数
void insert(struct Student** stu, int m, char direc, struct Student* ins)
{struct Student* p, * head, * front = NULL, * back = NULL;for (head = *stu, p = head; p != NULL; p = p->next){if (p->num == m){if (direc == 'F'){front = p->prev;back = p;}else if (direc == 'B'){front = p;back = p->next;}if (head == back)head = ins;if (front != NULL)front->next = ins;if (back != NULL)back->prev = ins;ins->prev = front;ins->next = back;}}*stu = head;//因为stu指向stud,所以把head赋值给del函数里的*stu就是赋值给主函数main的stud
}//输出函数
void print(struct Student* stu)
{struct Student* p;printf("Output Result:\n");for (p = stu; p != NULL; p = p->next){printf("%d %.2f\n", p->num, p->score);}
}
方法五:
#include <stdio.h>
#include <stdlib.h>struct Student
{ //声明结构体(双向链表结构体)int num;float score;struct Student *prev;struct Student *next;
};struct Student *input(); //声明输入函数
void insert(struct Student **stu, int m, char direc, struct Student *ins); //声明插入函数
void print(struct Student *stu); //声明输出函数int main()
{struct Student *stud, in, *inser; //定义结构体指针,插入的结构体变量,指向插入结构体变量的指针int insert_num; //定义要插入的结点学号char dir; //定义前插后插的方向变量stud=input(); //调用输入函数print(stud); //输出全部数据printf("Please enter insert student info: "); //输入要插入的学生数据(学号和成绩)scanf("%d %f", &in.num, &in.score);getchar();inser=∈ //结构体变量指针指向inprintf("Please enter insert num: "); //输入要插入哪个学号scanf("%d", &insert_num);getchar();printf("Please enter F or B: "); //输入是要插入学号前还是后,F是前插,B是后插。scanf("%c", &dir);getchar();insert(&stud, insert_num, dir, inser); //调用插入函数print(stud);return 0;
}//输入函数
struct Student *input()
{struct Student *p1, *p2, *head;int n=0;p1=p2=(struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n+1);scanf("%d %f", &p1->num, &p1->score);getchar();head=NULL;while (p1->num!=0){n++;if (n==1){head=p1;p1->prev=NULL;}else{p2->next=p1;p1->prev=p2;}p2=p1;p1=(struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n+1);scanf("%d %f", &p1->num, &p1->score);getchar();}p2->next=NULL;return head;
}//插入函数
void insert(struct Student **head, int m, char direc, struct Student *ins)//head指向stud,修改*head就是修改stud
{struct Student *p, *front=NULL, *back=NULL;for (p=*head; p!=NULL; p=p->next) {if (p->num==m) {if (direc=='F') {front=p->prev;back=p;}else if (direc=='B') {front=p;back=p->next;}if(*head==back)*head=ins;if(front!=NULL)front->next=ins;if(back!=NULL)back->prev=ins;ins->prev=front;ins->next=back;}}
}//输出函数
void print(struct Student *stu)
{struct Student *p;printf("Output Result:\n");for (p=stu; p!=NULL; p=p->next){printf("%d %.2f\n", p->num, p->score);}
}
在VS2019下,需将源文件的scanf做些修改:
#include <stdio.h>
#include <stdlib.h>struct Student
{ //声明结构体(双向链表结构体)int num;float score;struct Student* prev;struct Student* next;
};struct Student* input(); //声明输入函数
void insert(struct Student** stu, int m, char direc, struct Student* ins); //声明插入函数
void print(struct Student* stu); //声明输出函数int main()
{struct Student* stud, in, * inser; //定义结构体指针,插入的结构体变量,指向插入结构体变量的指针int insert_num; //定义要插入的结点学号char dir; //定义前插后插的方向变量stud = input(); //调用输入函数print(stud); //输出全部数据printf("Please enter insert student info: "); //输入要插入的学生数据(学号和成绩)scanf_s("%d %f", &in.num, &in.score);getchar();inser = ∈ //结构体变量指针指向inprintf("Please enter insert num: "); //输入要插入哪个学号scanf_s("%d", &insert_num);getchar();printf("Please enter F or B: "); //输入是要插入学号前还是后,F是前插,B是后插。scanf_s("%c", &dir, (unsigned int)sizeof(char));getchar();insert(&stud, insert_num, dir, inser); //调用插入函数print(stud);return 0;
}//输入函数
struct Student* input()
{struct Student* p1, * p2, * head;int n = 0;p1 = p2 = (struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n + 1);scanf_s("%d %f", &p1->num, &p1->score);getchar();head = NULL;while (p1->num != 0){n++;if (n == 1){head = p1;p1->prev = NULL;}else{p2->next = p1;p1->prev = p2;}p2 = p1;p1 = (struct Student*)malloc(sizeof(struct Student));printf("Please enter No.%d student info: ", n + 1);scanf_s("%d %f", &p1->num, &p1->score);getchar();}p2->next = NULL;return head;
}//插入函数
void insert(struct Student** head, int m, char direc, struct Student* ins)//head指向stud,修改*head就是修改stud
{struct Student* p, * front = NULL, * back = NULL;for (p = *head; p != NULL; p = p->next){if (p->num == m){if (direc == 'F'){front = p->prev;back = p;}else if (direc == 'B'){front = p;back = p->next;}if (*head == back)*head = ins;if (front != NULL)front->next = ins;if (back != NULL)back->prev = ins;ins->prev = front;ins->next = back;}}
}//输出函数
void print(struct Student* stu)
{struct Student* p;printf("Output Result:\n");for (p = stu; p != NULL; p = p->next){printf("%d %.2f\n", p->num, p->score);}
}
写一个函数insert,用来向一个动态链表插入节点。相关推荐
- (C语言)写一个函数insert,用来向一个动态链表插入节点
写一个函数insert,用来向一个动态链表插入节点 用creat,print,del,insert四个函数,编写主函数,先后调用这些函数,实现链表的建立,输出,删除和插入,从主函数中指定需要删除和插入 ...
- ACMNO.27 Python的两行代码解决 C语言-字符逆序 写一函数。使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。 输入 一行字符 输出 逆序后的字符串
题目描述 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串. 输入 一行字符 输出 逆序后的字符串 样例输入 123456abcdef 样例输出 fedcba654321 来源 ...
- ACMNO.24 C语言-转置矩阵 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。 输入 一个3x3的矩阵 输出 转置后的矩阵 样例
题目描述 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换. 输入 一个3x3的矩阵 输出 转置后的矩阵 样例输入 1 2 3 4 5 6 7 8 9 样例输出 1 4 7 2 5 8 3 ...
- 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换
写一个函数,使给定的一个二维数组(3×3)转置,即行列互换 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 163 Solved: 120 [Subm ...
- 写一个函数取出php,写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名...
写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名 例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php 直接先上方 ...
- 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。
题目描述 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串. 输入 一行字符 输出 逆序后的字符串 样例输入 123456abcdef 样例输出 fedcba654321 #i ...
- 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。
题目描述 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换. 输入 一个3x3的矩阵 输出 无 样例输入 1 2 3 4 5 6 7 8 9 样例输出 1 4 7 2 5 8 3 6 9 # ...
- 写一个函数,使给定的一个3 × 3的二维整型数组转置,即行列互换。
题目来源: C语言程序设计(第四版)/ 第七章 / 习题7.3 题目要求: 写一个函数,使给定的一个3 × 3的二维整型数组转置,即行列互换. 具体思路: 将给定的二维整型数组a用另外一个二维数组b备 ...
- 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串
写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串 #include<stdio.h> #include<string.h> int main() {void ...
最新文章
- PHP7.0 Window10 Redis安装教程
- Android复习08【内容提供者】
- Android成长日记-使用GridView显示多行数据
- java改变变量编码方式_Java 8中的5个功能将改变您的编码方式
- 管家婆打印自定义编辑_打印相关,人手一份!
- python中类型转换的规则_Python 类型转换指南
- 用python模拟《流浪地球》的木星引力弹弓效应
- Node.js、Express、Socket.io 入门
- java-spark的各种常用算子的写法
- python 字符串编码 str和unicode 区别以及相互转化 decode('utf-8') encode('utf-8')
- 游戏夜读 | 游戏关卡设计师
- 河海大学计算机专硕英语面试,河海大学翻译硕士(英语)考研复试流程
- 美国主要经济数据解注释
- Android Display ID 对应关系
- Anroid Studio开发---日记本App
- python残差分析图
- 一份很哇塞的产品经理述职报告(附PPT下载)
- 即时通信和实时通信的区别
- 2021年中国亚马逊耳环市场趋势报告、技术动态创新及2027年市场预测
- C#梁朝伟变刘德华之山寨实现