求助:用C语言编程序(通讯录管理系统)实训题目
【问题描述】建立一个本班学生通讯录文件,包括学号(num)、姓名(name)、性别(sex)、电话(phone)、电子邮箱(email)、住址(addr)。【要求】编写菜...
【问题描述】建立一个本班学生通讯录文件,包括学号(num)、姓名(name)、性别(sex)、电话(phone)、电子邮箱(email)、住址(addr)。【要 求】编写菜单程序,功能包括:建立通讯录、插入记录,删除记录、修改记录、按照学号或姓名查询记录、显示记录、保存文件。定义班级学生结构体名称为student。学号(num)、姓名(name)、性别(sex)、电话(phone)、电子邮箱(email)、住址(addr)均为字符型数组,长度分别为2、8、2、11、20、20。
展开
1个回答
2013-07-26
展开全部
哥们。太麻烦了。给你个基本的链表。具体的操作你调用我给你的函数可以么?
typedef struct node{ int data; struct node *next;}node;node *create(){ node *head,*p,*q; int i=0; int x; head=(node *)malloc(sizeof(node)); while(1) { printf("please input the node:"); scanf("%d",&x); if(x==0) {break;} p=(node *)malloc(sizeof(node)); p->data=x; if(++i==1) { head->next=p; } else { q->next=p; } q=p; } q->next=NULL; return head;}void print(node *head){ node *p; int index=0; if(head->next==NULL) { printf("Link is empty!\n"); exit(0); } p=head->next; while(p!=NULL) { printf("the %d node is %d\n",++index,p->data); p=p->next; }}int length(node *head){ int len=0; node *p; p=head->next; while(p) { len++; p=p->next; } return len;}node *search(node *head,int pos){ node *p; int len=length(head); p=head->next; if(pos<0) { printf("incorrect position!\n"); return NULL; } else if(pos>len) { printf("incorrect position!\n"); return NULL; } else if(pos==0) { return head; } if(p==NULL) { printf("the link is empty!\n"); return NULL; } while (--pos) { p=p->next; } return p;}node *delete(node *head,int pos){ node *p,*q; int len=length(head); p=head->next; if(pos<0) { printf("incorrect position!\n"); return NULL; } else if(pos>len) { printf("incorrect position!\n"); return NULL; } if(p==NULL) { printf("link empty!\n"); return NULL; } p=search(head,pos-1); if(p!=NULL&&p->next!=NULL) { q=p->next; p->next=q->next; free(q); } return head;} node *insert(node *head,int pos,int x){ node *p,*q=NULL; q=(node *)malloc(sizeof(node)); q->data=x; if(pos==0) { head->next=q; return head; } p=search(head,pos); if(p!=NULL) { q->next=p->next; p->next=q; } return head;}
typedef struct node{ int data; struct node *next;}node;node *create(){ node *head,*p,*q; int i=0; int x; head=(node *)malloc(sizeof(node)); while(1) { printf("please input the node:"); scanf("%d",&x); if(x==0) {break;} p=(node *)malloc(sizeof(node)); p->data=x; if(++i==1) { head->next=p; } else { q->next=p; } q=p; } q->next=NULL; return head;}void print(node *head){ node *p; int index=0; if(head->next==NULL) { printf("Link is empty!\n"); exit(0); } p=head->next; while(p!=NULL) { printf("the %d node is %d\n",++index,p->data); p=p->next; }}int length(node *head){ int len=0; node *p; p=head->next; while(p) { len++; p=p->next; } return len;}node *search(node *head,int pos){ node *p; int len=length(head); p=head->next; if(pos<0) { printf("incorrect position!\n"); return NULL; } else if(pos>len) { printf("incorrect position!\n"); return NULL; } else if(pos==0) { return head; } if(p==NULL) { printf("the link is empty!\n"); return NULL; } while (--pos) { p=p->next; } return p;}node *delete(node *head,int pos){ node *p,*q; int len=length(head); p=head->next; if(pos<0) { printf("incorrect position!\n"); return NULL; } else if(pos>len) { printf("incorrect position!\n"); return NULL; } if(p==NULL) { printf("link empty!\n"); return NULL; } p=search(head,pos-1); if(p!=NULL&&p->next!=NULL) { q=p->next; p->next=q->next; free(q); } return head;} node *insert(node *head,int pos,int x){ node *p,*q=NULL; q=(node *)malloc(sizeof(node)); q->data=x; if(pos==0) { head->next=q; return head; } p=search(head,pos); if(p!=NULL) { q->next=p->next; p->next=q; } return head;}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询