您的位置:首页 > 编程语言 > C语言/C++

C/C++ | 28-20 写出程序删除链表中的所有节点

2017-07-27 18:43 302 查看
/*
删除所有链表的节点
*/
#include <cstdio>
#include <deque>
#include <algorithm>
#include <iterator>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include <assert.h>

using namespace std;

typedef struct LNode
{
int data;
struct LNode *next;
}LNode;

LNode *CreatLink(int num)  // 构造
{
int i=1;
LNode *head, *tail, *p;
head = (LNode *)malloc(sizeof(LNode));
tail = head;
while (num--)
{
p = (LNode *)malloc(sizeof(LNode));
p->data = i;
tail->next = p;
tail = p;
i++;
}
tail->next = NULL;
return head;
}

LNode *FindLink(LNode *head,int X)  //查找
{
assert( head != NULL);
LNode *chick=head->next;
while (chick != NULL)
{
if (chick->data == X)
return chick;
else
chick = chick->next;
}
return NULL;
}

void DeleteLink(LNode *head, int X)  //删除
{
assert(head != NULL);
LNode *p;
LNode *q;
p=FindLink(head, X);
q = p->next;
p->data = q->data;
p->next = q->next;
free(q);
}

void DeleteAllLink(LNode *head)
{
assert(head != NULL);
LNode *p ;
while (head!=NULL)
{
p = head->next;
free(head);
head = p;
}
cout << "all Linked Deleted!" << endl;  //在这里head已为NULL
}

int main()
{
LNode *head = CreatLink(50);
DeleteLink(head, 5);
DeleteAllLink(head);
system("pause");//这里head随机给值了
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: