.exe已停止工作

时间:2021-09-19 17:27:18

#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; .exe已停止工作

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;
}

}
}

5 个解决方案

#1



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;
}

}

#2


查询全部结束后,就停止工作了。
查询语句代码,在上面。

#3


崩溃了。自己调试啊

#4


程序太长,不才兄弟我已经晕了,所以救不了你。你找赵四老湿,必有所获。

#5


单步调试

#1



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;
}

}

#2


查询全部结束后,就停止工作了。
查询语句代码,在上面。

#3


崩溃了。自己调试啊

#4


程序太长,不才兄弟我已经晕了,所以救不了你。你找赵四老湿,必有所获。

#5


单步调试