2,建立一个有5个结点的单向链表,每个结点包含姓名,年龄和工资.编写下列函数,然后在main函数中测试.

2、建立一个有5个结点的单向链表,每个结点包含姓名、年龄和工资。编写下列函数,然后在main函数中测试。(1)用于建立链表的函数;(2)用来输出链表的函数;(3)编写插入... 2、建立一个有5个结点的单向链表,每个结点包含姓名、年龄和工资。编写下列函数,然后在main函数中测试。
(1)用于建立链表的函数;
(2)用来输出链表的函数;
(3)编写插入结点的函数,在指定位置插入一个新结点;
(4)编写删除结点的函数,在指定位置删除一个结点。

要用C语言TT
展开
 我来答
fddxsyf123
2014-12-13 · TA获得超过1043个赞
知道答主
回答量:54
采纳率:0%
帮助的人:47.4万
展开全部
#include<stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <windows.h>

typedef struct Node
{
char name[6];
int age;
int wage;
struct Node *next;
}NODE,*PNODE;

PNODE Init();
void Show(PNODE);
PNODE Insert(PNODE,int);
PNODE Delete(PNODE,int);

PNODE Init()
{
PNODE head = NULL;
PNODE pTail = NULL;
int t=0;
for(int i=0; i<5; i++)
{
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(!pNew)
exit(-1);
printf("---%d---\n",i+1);
printf("输入姓名:");
scanf("%s",&pNew->name);
printf("输入年龄:");
scanf("%d",&pNew->age);
printf("输入工资:");
scanf("%d",&pNew->wage);
if(0==t)
{
head = (PNODE)malloc(sizeof(NODE));
if(!head)
exit(-1);
head = pNew;
pNew->next = NULL;
pTail = head;
t=1;
}
else
{
pTail->next = pNew;
pNew->next= NULL;
pTail = pNew;
}
}
return head;
}

void Show(PNODE head)
{
int i=1;
PNODE p =  head;
while(NULL!= p)
{

printf("---%d---\n",i);
printf("NAME:%s\n",p->name);
printf("AGE:%d\n",p->age);
printf("WAGE:%d\n",p->wage);
p = p->next;
i++;
}
return;
}

PNODE Insert(PNODE head,int pos)
{
PNODE p = head;
PNODE p2 = head;
PNODE p1 = p;
int t = pos;
pos-=1;
while(pos!=0)
{
p1 = p;
p = p->next;
pos--;
}
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(!pNew)
exit(-1);
printf("---%d---\n",t);
printf("输入姓名:");
scanf("%s",&pNew->name);
printf("输入年龄:");
scanf("%d",&pNew->age);
printf("输入工资:");
scanf("%d",&pNew->wage);
p1->next = pNew;
pNew->next = p;

return p2;
}

PNODE Delete(PNODE head,int pos)
{
PNODE p = head;
PNODE p2 = head;
PNODE p1 = p;
pos-=1;
while(pos!=0)
{
p1 = p;
p = p->next;
pos--;
}
p1->next = p->next;
free(p);
p = NULL;

return p2;
}

int main()
{
PNODE head = NULL;
head = Init();
Show(head);
head = Insert(head,2);
Show(head);
head = Delete(head,4);
Show(head);
system("pause");
return 0;
}

【PS】我用的是无头指针的单链表。有些地方还可以改进,健壮程序。如有不懂,可以追问,很高兴帮助您。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式