如题所述
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node{
char no[20];//åæ¾ç¼å·
char name[40];//åæ¾å称
int reserve;//åºå
struct node *next;
}NODE;
typedef struct link{
NODE *front;//头æé
NODE *rear;//å°¾æé
}LINKï¼
NODE *create_node(void){
NODE *node = (NODE *)malloc(sizeof(NODE));
printf("请è¾å ¥è´§ç©ç¼å·ï¼");
gets(node->no);
printf("请è¾å ¥è´§ç©å称:");
gets(node->name);
printf("请è¾å ¥è´§ç©å称:");
char ch;
while( (ch= getchar()) != '\n');//rewind(stdin);
scanf("%d",&node->reserve);
node->next = NULL;
return node;
}
void init_link(LINK *link){
link->rear = NULL;
link->front = NULL;
}
int link_empty(LINK *link){
return link->front == NULL ? 1: 0;
}
int node_num(LINK *link){
int num = 0;
if( link_empty(link)){
return num;
}
num = 1;
NODE *node = link->front;
while(node != link->rear){
node = node->next;
++num;
}
return num;
}
/*NODE *node_find(LINK *link,const int n){
int num = node_num(link);
if(num < n){
printf("å ¬æèç¹%d个ï¼æ æ³æ¾å°ç¬¬%d个èç¹\n",num,n);
}
else{
}
}
*/
void node_push(LINK *link){
NODE *node = create_node();
if(link->front == NULL){
link->front = node;
link->rear = node;
node->next = NULL;
}
else{
link->rear->next = node;
link->rear = node;
node->next = NULL;
}
}
void node_insert(LINK *link,const int n){
int num = 0,i = 1;
NODE *node = link->front;
NODE *new_node = NULL;
if ( link_empty(link) ){
printf("é¾è¡¨ä¸ºç©ºï¼å°å»ºç«é¾è¡¨ï¼\n");
node_push(link);
}
else{
if( n <= 1){
printf("å¨é¾è¡¨å¤´æå ¥æ°æ®\n");
new_node = create_node();
new_node->next = link->front;
link->front = new_node;
}
else if( n>= num = node_num(link) ){
printf("èç¹æ°å°äº%d,å°å¨æ«å°¾æå ¥èç¹.\n",n);
node_push(link);
}
else{
printf("å¨ç¬¬n个èç¹åæå ¥æ°æ®\n");
if(num >= n){
while( i != n){
node = node->next;
++i;
}
new_node = create_node();
new_node-next = node->next;
node->next = new_node;
}
}
}
void find_node_insert(LIKNK *link,const char *name){
NODE *node = link->front;
if( link_empty(link) )
node_push(link);
else {
while(strcmp(node->name,name) != 0){
if(node != link->rear)
node = node->next;
else break;
}
if(node != NULL){
NODE *new_node = create_node();
new_node-next = node->next;
node->next = new_node;
}
else {
printf("没ææ¾å°ç¸å ³è´§ç©,å°å¨å¤´èç¹æå ¥æ°æ®\n");
intsert(link,0);
}
}
#include <stdlib.h>
#include <string.h>
typedef struct node{
char no[20];//åæ¾ç¼å·
char name[40];//åæ¾å称
int reserve;//åºå
struct node *next;
}NODE;
typedef struct link{
NODE *front;//头æé
NODE *rear;//å°¾æé
}LINKï¼
NODE *create_node(void){
NODE *node = (NODE *)malloc(sizeof(NODE));
printf("请è¾å ¥è´§ç©ç¼å·ï¼");
gets(node->no);
printf("请è¾å ¥è´§ç©å称:");
gets(node->name);
printf("请è¾å ¥è´§ç©å称:");
char ch;
while( (ch= getchar()) != '\n');//rewind(stdin);
scanf("%d",&node->reserve);
node->next = NULL;
return node;
}
void init_link(LINK *link){
link->rear = NULL;
link->front = NULL;
}
int link_empty(LINK *link){
return link->front == NULL ? 1: 0;
}
int node_num(LINK *link){
int num = 0;
if( link_empty(link)){
return num;
}
num = 1;
NODE *node = link->front;
while(node != link->rear){
node = node->next;
++num;
}
return num;
}
/*NODE *node_find(LINK *link,const int n){
int num = node_num(link);
if(num < n){
printf("å ¬æèç¹%d个ï¼æ æ³æ¾å°ç¬¬%d个èç¹\n",num,n);
}
else{
}
}
*/
void node_push(LINK *link){
NODE *node = create_node();
if(link->front == NULL){
link->front = node;
link->rear = node;
node->next = NULL;
}
else{
link->rear->next = node;
link->rear = node;
node->next = NULL;
}
}
void node_insert(LINK *link,const int n){
int num = 0,i = 1;
NODE *node = link->front;
NODE *new_node = NULL;
if ( link_empty(link) ){
printf("é¾è¡¨ä¸ºç©ºï¼å°å»ºç«é¾è¡¨ï¼\n");
node_push(link);
}
else{
if( n <= 1){
printf("å¨é¾è¡¨å¤´æå ¥æ°æ®\n");
new_node = create_node();
new_node->next = link->front;
link->front = new_node;
}
else if( n>= num = node_num(link) ){
printf("èç¹æ°å°äº%d,å°å¨æ«å°¾æå ¥èç¹.\n",n);
node_push(link);
}
else{
printf("å¨ç¬¬n个èç¹åæå ¥æ°æ®\n");
if(num >= n){
while( i != n){
node = node->next;
++i;
}
new_node = create_node();
new_node-next = node->next;
node->next = new_node;
}
}
}
void find_node_insert(LIKNK *link,const char *name){
NODE *node = link->front;
if( link_empty(link) )
node_push(link);
else {
while(strcmp(node->name,name) != 0){
if(node != link->rear)
node = node->next;
else break;
}
if(node != NULL){
NODE *new_node = create_node();
new_node-next = node->next;
node->next = new_node;
}
else {
printf("没ææ¾å°ç¸å ³è´§ç©,å°å¨å¤´èç¹æå ¥æ°æ®\n");
intsert(link,0);
}
}
温馨提示:答案为网友推荐,仅供参考