在c语言链表的第一个节点,建立带头节点的单链表,在单链表的第i节点之前插入一个新节点,删除第i个节点,用c语言写、拜托了...

满意答案

00e27ab806e4881f8254fe7ae8741834.png

218239安乐窝

2015.11.05

00e27ab806e4881f8254fe7ae8741834.png

采纳率:46%    等级:5

已帮助:406人

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586#include #include #include  typedef struct LinkNode {    int data;    struct LinkNode *pNext;}LinkNode,*PNode; //insert with positonbool insert( LinkNode *pHead, int data, int iPos){    LinkNode *p=NULL, *pTmp=NULL ;    LinkNode* pNewNode = (LinkNode *)malloc(sizeof(LinkNode));    pNewNode->data = data;    pNewNode->pNext = NULL;     p = pHead;    while ((iPos-1) && p->pNext){        p = p->pNext;        iPos--;    }     if (p->pNext == NULL){        p->pNext = pNewNode;        pNewNode->pNext = NULL;    }else{        pTmp = p->pNext;        p->pNext = pNewNode;        pNewNode->pNext = pTmp;    }     return true;} //delete with positionbool deletefun(LinkNode *pHead, int iPos){    LinkNode *p = pHead, *pTemp=NULL;    if (p->pNext ==NULL)        return true;     while ((iPos-1) && p->pNext->pNext)    {        p = p->pNext;        iPos--;    }         pTemp =  p->pNext;    if (p->pNext->pNext != NULL){        p->pNext = p->pNext->pNext;        free(pTemp);    }else{        free(p->pNext);        p->pNext = NULL;    }    return true;} void PrintLink(const LinkNode *pHead){    LinkNode *p = pHead->pNext;    while (p)    {        printf("%d\t",p->data);        p = p->pNext;    }    printf("\n");} int main(){    LinkNode obHead;    obHead.pNext = NULL;    insert(&obHead,10,1);    insert(&obHead,100,1);    insert(&obHead,1000,1);    insert(&obHead,10000,1);    insert(&obHead,100000,1);    insert(&obHead,333,2);    PrintLink(&obHead);    deletefun(&obHead,2);    PrintLink(&obHead);    return 0;}追问: 运行有错误啊

追答: 我是在c++环境下编译的,又修改了一下,你再看看,如果有错误,发一下错误给我看看,我本地正常

00分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值