با سلام
خب من یه چیزهایی رو پاک کردم که خوندن کد راحتتر بشه. هنوز خیلی از توابع رو پیاده سازی نکردم چون هنوز نتوستم تابع ()insert رو بنویسم. این کدی بود که من نوشتم اما اون طور که انتظار دارم کار نمیکنه:
تابع ()print قراره لیست رو چاپ کنه. تابع ()addfirst یه چیزی رو به اول لیست اضافه میکنه و تابع ()insert یک چیزی رو در یک جای خاص از لیست قرار میدهد و تابع ()getnode هم یک node میگیره.
فایل list.h
#include <stdio.h>
#include <stdlib.h>
typedef struct node node;
struct node {
int value;
node* next;
};
node *getnode();
void addfirst(node**,int);
void print(node *);
void insert(node **, int, int);
فایل list.c
#include "list.h"
int main()
{
node *list;
insert(&list, 0, 5);
insert(&list, 1, 10);
insert(&list, 2, 15);
insert(&list, 3, 20);
print(list);
return 0;
}
node *getnode()
{
node* temp;
temp = (node*) malloc( sizeof(node) );
if( temp != NULL )
return temp;
abort();
}
void addfirst( node **ptr, int val )
{
node *temp = getnode();
temp -> value = val;
temp -> next = *ptr;
(*ptr) = temp;
}
void print( node *ptr )
{
while( ptr )
{
printf("%d\n", ptr -> value );
ptr = ptr -> next;
}
}
void insert(node **ptr, int index, int val)
{
if(index == 0)
{
addfirst(ptr, val);
}
else
{
node *temp = getnode();
temp -> value = val;
int j;
for(j=1; j < index; j++)
{
(*ptr) = (*ptr) -> next;
}
temp -> next = (*ptr) -> next;
(*ptr) -> next = temp;
}
}
خیلی ممنونم