.exe已停止工作

ai8724968 2014-12-07 10:53:29

#include <stdio.h>
#include"string.h"
#include"stdlib.h"
#include"iostream.h"

typedef struct{
char Sno[8];
char Sname[20];
char Ssex[4];
char Spost[10];
}DataType;

typedef struct Node
{ DataType data;
struct Node *next;
}SLNode;

void ListInitiate(SLNode *head)
{ head = (SLNode *)malloc(sizeof(SLNode));
head->next = NULL;
}

int ListLength(SLNode *head)
{
SLNode *p = head;
int size = 0;
while(p->next != NULL)
{ p = p->next;
size ++;
}
return size;
}

int ListInsert(SLNode *head, int i, DataType x)
{ SLNode *p, *q; int j;
p = head; j = -1;
while(p->next != NULL && j < i - 1)
{ p = p->next; j++;
}
if(j != i - 1)
{ printf("插入位置参数错!");
return 0;
}
q = (SLNode *)malloc(sizeof(SLNode));
q->data = x; q->next = p->next; p->next = q;
return 1;
}

int ListDelete(SLNode *head, int i, DataType *x)
{ SLNode *p, *s; int j;
p = head; j = -1;
while(p->next != NULL && p->next->next!= NULL && j < i - 1)
{ p = p->next; j++;
}
if(j != i - 1)
{ printf("插入位置参数错!");
return 0;
}
s = p->next; *x = s->data; p->next = p->next->next;
free(s);
return 1;
}

int ListGet(SLNode *head, int i, DataType *x)
{ SLNode *p;
int j;
p = head; j = -1;
while(p->next != NULL && j < i)
{ p = p->next; j++;
}
if(j != i)
{ printf("取元素位置参数错!");
return 0;
}
*x = p->data;
return 1;
}

void Destroy(SLNode **head)
{ SLNode *p, *p1;
p = *head;
while(p != NULL)
{ p1 = p; p = p->next;
free(p1);
}
*head = NULL;
}

void StaffInsert(SLNode *L,DataType S){
int a;
printf("请输入插入位置:");
scanf("%d",&a);
printf("\n");
printf("员工号:");
cin>>S.Sno;
printf("员工姓名:");
cin>>S.Sname;
printf("员工性别:");
cin>>S.Ssex;
printf("员工职位:");
cin>>S.Spost;
ListInsert(L, a-1, S);
printf("插入成功!");

}

void StaffDelete(SLNode *L){
DataType x;
int a;
printf("请输入删除位置:");
scanf("%d",&a);
ListDelete(L,a-1,&x);
printf("删除成功!");
}

void StaffP(DataType x){
printf("%s\t",x.Sno);
printf("%s\t",x.Sname);
printf("%s\t",x.Ssex);
printf("%s\t",x.Spost);
printf("\n");
}

void StaffGet(SLNode *head){
DataType x;
int a;
int b;
int c=0;
SLNode *pWork = head->next;
printf("1.查询全部\n");
printf("2.查询单个\n");
printf("请输入选择:");
scanf("%d",&b);
switch(b){
case 1: {
printf("学号:\t");
printf("姓名:\t");
printf("性别:\t");
printf("年龄:\n");
while (pWork != NULL ){
x=pWork->data;
StaffP(x);
pWork = pWork->next;
}
break;}
case 2:printf("请输入查询位置:");
scanf("%d",&a);
printf("学号:\t");
printf("姓名:\t");
printf("性别:\t");
printf("年龄:\n");
ListGet(head,a-1,&x);
StaffP(x);
break;
default:break;
}

}

void first(SLNode *L,DataType S){
int num=0;
strcpy(S.Sno,"001");
strcpy(S.Sname,"张珊");
strcpy(S.Ssex,"女");
strcpy(S.Spost,"文员");
ListInsert(L,num,S);
num++;

strcpy(S.Sno,"002");
strcpy(S.Sname,"李思");
strcpy(S.Ssex,"女");
strcpy(S.Spost,"销售员");
ListInsert(L,num,S);
num++;

strcpy(S.Sno,"004");
strcpy(S.Sname,"王强");
strcpy(S.Ssex,"男");
strcpy(S.Spost,"经理");
ListInsert(L,num,S);
num++;

strcpy(S.Sno,"005");
strcpy(S.Sname,"赵括");
strcpy(S.Ssex,"男");
strcpy(S.Spost,"秘书");
ListInsert(L,num,S);
num++;

strcpy(S.Sno,"006");
strcpy(S.Sname,"刘刚");
strcpy(S.Ssex,"男");
strcpy(S.Spost,"文员");
ListInsert(L,num,S);
num++;
}

void main(){
SLNode L;
ListInitiate(&L);
DataType S;
int a;
first(&L,S);
while(1){
printf("\n-----------------\n");
printf("1.插入数据\n");
printf("2.删除数据\n");
printf("3.查询数据\n");
printf("4.退出\n");
printf("-----------------\n");
printf("请输入选择:");
scanf("%d",&a);
if(a==4)break;
switch(a){
case 1:StaffInsert(&L,S); break;
case 2:StaffDelete(&L); break;
case 3:StaffGet(&L);break;
}

}
}
...全文
489 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
均陵鼠侠 2014-12-07
  • 打赏
  • 举报
回复
程序太长,不才兄弟我已经晕了,所以救不了你。你找赵四老湿,必有所获。
FightForProgrammer 2014-12-07
  • 打赏
  • 举报
回复
崩溃了。自己调试啊
ai8724968 2014-12-07
  • 打赏
  • 举报
回复
查询全部结束后,就停止工作了。 查询语句代码,在上面。
ai8724968 2014-12-07
  • 打赏
  • 举报
回复
void StaffP(DataType x){ printf("%s\t",x.Sno); printf("%s\t",x.Sname); printf("%s\t",x.Ssex); printf("%s\t",x.Spost); printf("\n"); } void StaffGet(SLNode *head){ DataType x; int a; int b; int c=0; SLNode *pWork = head->next; printf("1.查询全部\n"); printf("2.查询单个\n"); printf("请输入选择:"); scanf("%d",&b); switch(b){ case 1: { printf("学号:\t"); printf("姓名:\t"); printf("性别:\t"); printf("年龄:\n"); while (pWork != NULL ){ x=pWork->data; StaffP(x); pWork = pWork->next; } break;} case 2:printf("请输入查询位置:"); scanf("%d",&a); printf("学号:\t"); printf("姓名:\t"); printf("性别:\t"); printf("年龄:\n"); ListGet(head,a-1,&x); StaffP(x); break; default:break; } }
一根烂笔头 2014-12-07
  • 打赏
  • 举报
回复
单步调试

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧