C语言,写一个链表的插入删除和打印的程序

1.先输入有多少个数字:n表示链表有1-n这n个数。操作insert:insert491表示在第4个元素后插入整数91(表示在第i个元素后插入整数x(下标从1开始记))操... 1.先输入有多少个数字:n 表示链表有1-n这n个数。

操作insert:insert 4 91 表示在第4个元素后插入整数91(表示在第i个元素后插入整数x(下标从1开始记))
操作delate 后面有一个整数i,表示删除链表中的第i个元素。
操作Quite 表示退出。

最后打印经过处理后链表中的元素。
样例输入:
5
Insert 2 40
Insert 2 80
Delate 1
Quite
样例输出:
2 40 80 3 4 5
展开
 我来答
弦断泪已绝_
2017-12-24 · 超过43用户采纳过TA的回答
知道答主
回答量:72
采纳率:75%
帮助的人:13.6万
展开全部
#include
#include
#include

typedef struct Node
{
int date;
struct Node * pNext;
}NODE, *PNODE;

//函数声明
PNODE creat_list();//创建链表
void traverse_list(PNODE pHead); //输出链表
void Insert(PNODE pHead,int pos,int e); //pos 为插入位置 e为插入的数据
void Delete(PNODE pHead,int pos,int *e);
//pos 为删除链表第pos个数 e存放被删除的数据

int main()
{

int e;
PNODE pHead = NULL;
pHead = creat_list();
traverse_list(pHead);
Insert(pHead,2,99);
traverse_list(pHead);
Delete(pHead,3,&e);
printf("被删除的数据为 %d\n",e);
traverse_list(pHead);

return 0;
}

PNODE creat_list()
{
int len;//用来存放有效结点的个数
int i;
int val;//用来临时存放有效结点的数据

PNODE pHead = (PNODE)malloc(sizeof(NODE));
//创建一个不存放数据的结点,pHead 为头指针

if (pHead == NULL)
{
printf("内存分配失败,程序终止!\n");
exit(-1);
}

PNODE pTail = pHead;
pTail->pNext = NULL;

printf("请输入你需要生成的链表的个数:len = ");
scanf("%d",&len);

for (i = 0; i < len; i++)
{
printf("请输入第%d个节点的值:",i+1);
scanf("%d",&val);

PNODE pNew = (PNODE)malloc(sizeof(NODE));
//当i = 0 时,创建的第一个结点是首结 每创建一个新结点
if (pNew == NULL)
{
printf("内存分配失败,程序终止!\n");
exit(-1);
}
pNew->date = val;
pTail->pNext = pNew;
pNew->pNext = NULL;
pTail = pNew;
}
return pHead;
}

void traverse_list(PNODE pHead)
{
PNODE p = pHead->pNext;
while(NULL != p)
{
printf("%d ",p->date);
p = p->pNext;
}
printf("\n");
return;
}

void Insert(PNODE pHead,int pos,int e)
{
int j = 0;
PNODE p, s;
p = pHead;
while(p && j < pos - 1)
{
p = p->pNext;
j++;
}
if(!p || j > pos - 1)
exit(-1);
s = (PNODE)malloc(sizeof(NODE));
s->date = e;
s->pNext = p->pNext;
p->pNext = s;
}

void Delete(PNODE pHead,int pos,int *e)
{
int j = 0;
PNODE p, r;
p = pHead;
while(p && j < pos - 1)
{
p = p->pNext;
j++;
}
if(!p->pNext || j > pos - 1)
exit(-1);
r = p->pNext;
p->pNext = r->pNext;
*e = r->date;
free(r);
}
GTA小鸡
高粉答主

2017-12-24 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
C语言代做私信联系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式