我想尝试链接列表的插入功能。函数保存记录数组和链接数组。例如;
head=0
string[0]="Angel" linked[0]=1
string[1]="Cesar" linked[1]=2
string[2]="Eduardo" linked[2]=3
string[3]="Pamela" linked[3]=-1/*-1 element does not show*/
头部是天使和天使显示Eduardo.e.g。如果添加元素Denial,则字符串[4] =拒绝链接[4] = 2拒绝显示Eduardo.Attention:---->> string [1] =“Cesar”链接[1] = 4链接数组已更新
我在这个函数中遇到了一些错误。(元素无法添加。)一点帮助
#define SIZE 10
int main()
{
int linked[SIZE]={3,0,4,-1,1};
char *str[]={"Ellian","Calanthe","Adela","Gardenia","Barbara",NULL};
return 0;
}
void list(int arr[],int head,int linky[]){
int adr=head;
while(adr!=-1){
puts(arr[adr]);
adr=linky[adr];
}
}
void insert(int arrr[],int head,int linky[],char element){
int k,N=0,prev,next;
for(k=0;arrr[k]<NULL;k++)
N++;
arrr[N]=element;
if(element>arrr[head])
{
prev=head;
next=linky[head];
while((next!=-1) && (arrr[next]<element)){
prev=next;
next=linky[next];
}
linky[prev]=N;
linky[N]=next;
}
else{
linky=head;
head=N;
}
N++;
listele(arr,N,linky);
}
答案 0 :(得分:0)
在初始化之前,您正在使用string
数组内容,以避免未定义的行为更改此内容:
char string[SIZE];
到此:
char string[SIZE] = {0};
如果您希望string
数组以零开头。
当你这样做时,还要注意你正在运行数组的最后一个元素:
link[size] = ...
由于数组具有完全size
个元素,因此您可以使用的最大索引为size - 1
。
答案 1 :(得分:0)
替换
#define SIZE 10
通过
int size = 10;
并替换
void insert(char str[],int link[],int size,int first)
通过
void insert(char str[],int link[],int& size,int& first)
开始。仍然可能不起作用,但至少现在你做的事情实际上是你想要他们做的事情