c语言 编程 ,链表 改错

来源:百度知道 编辑:UC知道 时间:2024/05/31 04:54:00
void
SwapWithNext( Position P, List L )
{
Position BeforeP, AfterP;
BeforeP = P->Prev;
AfterP = P->Next;
P->Next = AfterP->Next;
BeforeP->Next = AfterP;
AfterP->Next = P;
P->Next->Prev = P;
P->Prev = AfterP;
AfterP->Prev = BeforeP;

我是按照上面给的 提示 写了下面的 链表交换的 程序
实行的时候 ,编译器出现错误 ,不知道怎么回事 ,请高手 指点

void swapNodes(DoubleNode * previousNode)
{
DoubleNode * p;
DoubleNode * afterp;

if (previousNode == NULL)
{
printf("Error in insertElement\n");
return;
}

previousNode = p->prev;
afterp = p->next;

p->next = afterp->next;
previousNode->next = afterp;
afterp->next = p;
p->next->prev = p;
p->prev = afterp;
afterp->prev = previousNode;
}

给你一个我写的完整实例 , 你自己分析吧 ,希望对你有帮助.
#include <stdio.h>
#include <string.h>
#define null 0
typedef struct node{
char *data;//结点的数据域,为一个字符串
struct node *next;//结点的指针域
}linkstrnode;//定义单链表结点结构
typedef linkstrnode *linkstring;

main(){//建立数据域为字符串类型,且结点无重复的单链表。对单链表做删除结点操作

linkstring head;
char *t;

printf("\nplease input the node of the linklist:");
printf("\nnodes data is strings,and end of #\n");
creatlinkstr(&head);//建立单链表
printf("\nthe source linklist is :\n");
printing(head);//输出单链表
printf("\nplease input search string:");
gets(t);//输入要删除的字符串
deletet(&head,t);//在单链表head中找到并删除值与t相同的结点
printf("\nth