======Linked List Program======
A project for DATA by Kyle Pryslopski Fall Semester 2011.
This project was begun on ? and is anticipated to take till 12/2. (Upon completion you can correct this with the actual length).
=====Objectives=====
State the purpose of this project. What is the point of this project? What do we hope to accomplish by undertaking it?
=====Prerequisites=====
In order to successfully accomplish/perform this project, the listed resources/experiences need to be consulted/achieved:
* Matt
* Joe
* Karl
* linked lists
* character fuctions
=====Background=====
=====Scope=====
This project is to make a program that makes a list and edits it.
=====Attributes=====
=====Procedure=====
I made the separate programs then put them together to make the final program.
=====Code=====
#include
#include
struct node {
int value;
struct node *next;
struct node *prev;
};
typedef struct node Node;
int main()
{
int input, input2, i = 0;
Node *start, *tmp, *tmp2, *end;
start = tmp = NULL;
printf("Enter a value (-1 to quit): ");
scanf("%d", &input);
do {
if (input == -1)
break;
if (start == NULL)
{
start = (Node *) malloc (sizeof(Node));
start -> value = input;
start -> next = NULL;
tmp = start;
end = start;
}
else
{
tmp -> next = (Node *) malloc (sizeof(Node));
tmp -> next -> value = input;
tmp -> next = (Node *) malloc (sizeof(Node));
tmp -> next -> value = input;
tmp -> next -> next = NULL;
tmp = tmp -> next;
end = end -> next;
}
printf("Enter a value (-1 to quit): ");
scanf("%d", &input);
} while (input != -1);
tmp = start;
while(tmp != NULL)
{
printf("[%d] value = %d\n", i, tmp -> value);
tmp = tmp -> next;
i++;
}
printf("Select a node to delete: ");
scanf("%d", &input2);
tmp = start;
for(i=0; i<(input2-1); i++)
{
tmp = tmp -> next;
}
if ((tmp == start) && (input != 1))
{
start = start -> next;
tmp -> next = NULL;
free(tmp);
tmp = NULL;
}
else
{
tmp2 = tmp -> next;
tmp -> next = tmp2 -> next;
tmp2 -> next = NULL;
free(tmp2);
tmp2 = NULL;
}
i = 0;
tmp = start;
while(tmp != NULL)
{
printf("[%d] value = %d\n", i, tmp -> value);
tmp = tmp -> next;
i++;
}
printf("Enter node to insert before: ");
scanf("%d", &input);
tmp = start;
for(i=0; i<(input-1); i++)
{
tmp = tmp -> next;
}
printf("Enter a value: ");
scanf("%d", &input2);
tmp2 = (Node *) malloc (sizeof(Node));
tmp2 -> value = input2;
if((tmp == start) && (input != 1))
{
tmp2 -> next = start;
start = tmp2;
}
else
{
tmp2 -> next = tmp -> next;
tmp -> next = tmp2;
}
i = 0;
tmp = start;
while(tmp != NULL)
{
printf("[%d] value = %d\n", i, tmp -> value);
tmp = tmp -> next;
i++;
}
printf("Enter node to insert after: ");
scanf("%d", &input);
tmp = start;
for(i=0; i next;
}
printf("Enter a value: ");
scanf("%d", &input2);
tmp2 = (Node *) malloc (sizeof(Node));
tmp2 -> value = input2;
if((tmp == end) && (input != 1))
{
tmp2 -> prev = end;
end -> next = tmp2;
end = end -> next;
}
else
{
tmp2 -> prev = tmp;
tmp2 -> next = tmp -> next;
tmp -> next = tmp2;
tmp2 -> next -> prev = tmp2;
}
i = 0;
tmp = start;
while(tmp != NULL)
{
printf("[%d] value = %d\n", i, tmp -> value);
tmp = tmp -> next;
i++;
}
return(0);
}
=====Execution=====
Again, if there is associated code with the project, and you haven't already indicated how to run it, provide a sample run of your code:
lab46:~/src/cprog/linkedA$ ./projecta
Enter a value (-1 to quit): 1
Enter a value (-1 to quit): 2
Enter a value (-1 to quit): 3
Enter a value (-1 to quit): 4
Enter a value (-1 to quit): 5
Enter a value (-1 to quit): -1
[0] value = 1
[1] value = 2
[2] value = 3
[3] value = 4
[4] value = 5
Select a node to delete: 2
[0] value = 1
[1] value = 2
[2] value = 4
[3] value = 5
Enter node to insert before: 2
Enter a value: 3
[0] value = 1
[1] value = 2
[2] value = 3
[3] value = 4
[4] value = 5
Enter node to insert after: 4
Enter a value: 6
[0] value = 1
[1] value = 2
[2] value = 3
[3] value = 4
[4] value = 5
[5] value = 6
lab46:~/src/cprog/linkedA$
=====Reflection=====
This was a confusing program to make because the append function was not working.
=====References=====