 注意:程序有很多地方都没有检查,在要求比较高时,应该做一些适当的检查
^_^#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node *next;
} List;
List *CreateList(void)
{
List *ret = (List *)malloc(sizeof(List));
ret->data = 0;
ret->next = NULL;
return ret;
}
void ListAddValue(List *L, int data)
{
List *list = L;
while(list->next != NULL)
{
list = list->next;
}
list->next = (List *)malloc(sizeof(List));
list->next->data = data;
list->next->next = NULL;
}
int ListGetValue(List *L, int n)
{
List *list = L;
while(n--)
{
if(list->next != NULL)
{
list = list->next;
}
else
{
return -1;
}
}
return list->next->data; // 第一个结点不存储数据
}
int ListChangeValue(List *L, int n, int newValue)
{
List *list = L;
while(n--)
{
if(list->next != NULL)
{
list = list->next;
}
else
{
return -1;
}
}
list->next->data = newValue;
return 0;
}
int main(void)
{
List *list = CreateList();
int v;
for(int i = 1; i < 5; i++)
{
ListAddValue(list, i);
}
// 先打印一下
for(int i = 1; i < 5; i++)
{
printf("%d ", ListGetValue(list, i - 1));
}
putchar('\n');
for(int i = 3; i >= 1; i--)
{
v = ListGetValue(list, i - 1);
ListChangeValue(list, i, v);
}
// 再一次打印
for(int i = 1; i < 5; i++)
{
printf("%d ", ListGetValue(list, i - 1));
}
putchar('\n');
return 0;
}
1 2 3 4
1 1 2 3
请按任意键继续. . .
|