2,建立一个有5个结点的单向链表,每个结点包含姓名,年龄和工资.编写下列函数,然后在main函数中测试.
2、建立一个有5个结点的单向链表,每个结点包含姓名、年龄和工资。编写下列函数,然后在main函数中测试。(1)用于建立链表的函数;(2)用来输出链表的函数;(3)编写插入...
2、建立一个有5个结点的单向链表,每个结点包含姓名、年龄和工资。编写下列函数,然后在main函数中测试。
(1)用于建立链表的函数;
(2)用来输出链表的函数;
(3)编写插入结点的函数,在指定位置插入一个新结点;
(4)编写删除结点的函数,在指定位置删除一个结点。
要用C语言TT 展开
(1)用于建立链表的函数;
(2)用来输出链表的函数;
(3)编写插入结点的函数,在指定位置插入一个新结点;
(4)编写删除结点的函数,在指定位置删除一个结点。
要用C语言TT 展开
1个回答
展开全部
#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】我用的是无头指针的单链表。有些地方还可以改进,健壮程序。如有不懂,可以追问,很高兴帮助您。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询