链接列表插入

时间:2014-04-10 15:25:08

标签: c arrays algorithm data-structures singly-linked-list

我想尝试链接列表的插入功能。函数保存记录数组和链接数组。例如;

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

 }

2 个答案:

答案 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)

开始。仍然可能不起作用,但至少现在你做的事情实际上是你想要他们做的事情