程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c語言-有關C語言數據結構順序表的問題

c語言-有關C語言數據結構順序表的問題

編輯:編程解疑
有關C語言數據結構順序表的問題

代碼如下

#include
#include
#define MAX 100

typedef struct
{
char key[15];
char name[20];
int age;
}DATA;

typedef struct
{ DATA list[MAX+1];
int length;
}SeqList;

void SeqListInit(SeqList &L) //初始化順序表
{
L.length = 0;
}
int SeqListLength(SeqList &L) //返回順序表長度
{
return L.length;
}
int SeqListAdd(SeqList &L,DATA a) //添加元素
{
if(L.length>=MAX)
{
printf("順序表已滿,無法再添加\n");
return 0;
}
L.list[++L.length] = a;
return 1;
}
int SeqListInsert(SeqList &L,int n,DATA a) //插入元素
{
if(L.length>=MAX)
{
printf("順序表已滿,無法再添加\n");
return 0;
}
if(nL.length+1)
{
printf("插入元素錯誤,無法添加\n");
return 0;
}
for(int i=L.length;i>=n;i--)
{
L.list[i+1] = L.list[i];
}
L.list[n] = a;
L.length++;
return 1;
}
int SeqListDelete(SeqList &L,int n) //刪除元素
{
int i;
if(nL.length)
{
printf("刪除結點序號錯誤,不能刪除結點!\n");
return 0;
}
for(i = n;i L.list[i] = L.list[i+1];
L.length--;
return 1;
}
DATA *SeqListFindByNum(SeqList &L,int n) //通過元素位置查找元素
{
if(nL.length)
{
printf("元素序號不正確\n");
return NULL;
}
return &L.list[n];
}
int SeqListFindByCont(SeqList &L,char *c) //通過關鍵字查找元素
{
for(int i=1;i<=L.length;i++)
{
if(strcmp(L.list[i].key,c)==0)
return i;
}
return 0;
}
int SeqListAll(SeqList &L)
{
for(int i=1;i<=L.length;i++)
printf("(%s,%s,%d)\n",L.list[i].key,L.list[i].name,L.list[i].age);
return 1;
}
int main()
{
int i;
SeqList L;
DATA data,*data1;
char key[15];
SeqListInit(L);
do
{
printf("輸入添加的結點(學號,姓名,年齡):");
scanf("%s%s%d",data.key,data.name,&data.age);
if(data.age)
{
if(!SeqListAdd(L,data))
break;
}
else
break;
}while(1);
printf("\n順序表中的結點順序為:\n");
SeqListAll(L);

printf("\n要取出的結點的序號:");
scanf("%d",&i);
data1 = SeqListFindByNum(L,i);
if(data1)
    printf("第%d個結點為:(%s,%s,%d)\n",data1->key,data1->name,data1->age);

printf("\n要查找結點的關鍵字:");
scanf("%s",key);
i = SeqListFindByCont(L,key);
data1 = SeqListFindByNum(L,i);
if(data1)
    printf("第%d個結點為(%s,%s,%d)\n",data1->key,data1->name,data1->age);
return 0;

}

主函數運行到SeqListFindByNum函數程序就莫名奇妙的終止了,求大神看看是什麼情況,感謝大家。

最佳回答:


if(nL.length)
應該是
if(nL.length-1)

scanf("%s%s%d",data.key,data.name,&data.age);
->
scanf("%s,%s,%d",data.key,data.name,&data.age);
不然前兩個輸入不能分開

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved