typedef struct SLIST{
……
struct SLIST *next;
}SLIST_S;
#include <stdio.h>
#include <stdlib.h>
typedef int datatype;
typedef struct SLIST
{
datatype data;
struct SLIST *next;
} SLIST_S;
SLIST_S *createEmptyLinkList()
{
SLIST_S *listA = (SLIST_S *)malloc(sizeof(SLIST_S));
if (NULL == listA)
{
perror("listA malloc err");
return NULL;
}
listA->next = NULL;
return listA;
}
int insertDataLinkList(SLIST_S *listA, int post, datatype data)
{
SLIST_S *pnew = (SLIST_S *)malloc(sizeof(SLIST_S));
if (NULL == pnew)
{
perror("pnew malloc err");
return -1;
}
pnew->data = data;
pnew->next = NULL;
for (int i = 0; i < post; i++)
{
listA = listA->next;
}
pnew->next = listA->next;
listA->next = pnew;
return 0;
}
void showLinklist(SLIST_S *listB)
{
while (listB->next != NULL)
{
listB = listB->next;
printf("%d ", listB->data);
}
printf("\n");
}
int list_revert(SLIST_S *listA, SLIST_S *listB)
{
SLIST_S *q = listA->next;
SLIST_S *t = NULL;
listA->next = NULL;
while (q != NULL)
{
t = q->next;
q->next = listB->next;
listB->next = q;
q = t;
}
}
int main(int argc, char const *argv[])
{
SLIST_S *listA = createEmptyLinkList();
SLIST_S *listB = createEmptyLinkList();
for (int i = 0; i <= 6; i++)
{
insertDataLinkList(listA, i, i + 1);
}
showLinklist(listA);
list_revert(listA, listB);
showLinklist(listB);
return 0;
}
来自新华三_C语言程序设计