数据结构 c语言版 程序填充

哪位大虾帮帮忙 把下面给填完整了 谢谢了
好像是只用填:创建链表 输出链表 栈的初始化 压栈 出栈 逆置链表 那几个地方吧
#include <stdio.h>
#include <malloc.h>
#define maxsize 100
typedef struct{
char num[8];//学号
char name[9];//姓名
char gender[3];//性别
int score;//成绩
}DataType;

typedef struct node{
DataType data;
struct node *next;
}ListNode;
typedef ListNode *LinkList;

typedef struct
{
DataType stack[maxsize];
int top;
}SeqStack;

LinkList head;

LinkList CreateList()//创建链表
{

}

void PrintList(LinkList head)//输出链表
{

}

SeqStack *InitStack()//栈的初始化
{

}

int Push(SeqStack *s,DataType *student)//压栈
{

}

int StackEmpty(SeqStack *s)
{

}

DataType *Pop(SeqStack *s)//出栈
{

}

void RevLinkList(LinkList head)//逆置链表
{

}

void main()
{
printf("请输入学生信息单链表的信息:\n");
head=CreateList();
printf("这是初始的学生信息单链表:\n");
PrintList(head);
RevLinkList(head);
printf("这是逆置以后的学生信息单链表:\n");
PrintList(head);
getch();
}.
现在没有财富了 哪位好心的 就先可怜可怜了 啊 谢谢 thank you

#include <stdio.h>

#define MAXSIZE 100
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

// 学生信息
typedef struct {
char num[8]; // 学号
char name[9]; // 姓名
char gender[3];// 性别
int score; // 成绩
} STU;

// 链表结构
typedef struct node {
STU data;
struct node *next;
} ListNode,*LinkList;

// 栈结构
typedef struct
{
STU stack[MAXSIZE];
int top;
}SqStack;

// 创建链表
LinkList CreateList(int n)
{
int i;
LinkList head,p,q;

for(i=1;i<=n;i++)
{
p=(LinkList)malloc(sizeof(ListNode));
scanf("%s%s%s%d",p->data.num,p->data.name,\
p->data.gender,&p->data.score);
if(i==1) head=q=p;
else
{
q->next=p;
q=p;
}
}
q->next=NULL; // 表尾

return head;
}

// 输出链表
void PrintList(LinkList head)
{
LinkList p=head;

while(p)
{
printf("%s %s %s %d\n",p->data.num,p->data.name,\
p->data.gender,p->data.score);
p=p->next;
}
}

// 初始化栈
SqStack *InitStack(void)
{
SqStack *st=(SqStack*)malloc(sizeof(SqStack));
st->top=MAXSIZE;

return st;
}

// 压栈
int push(SqStack *st,STU stu)
{
if(st->top)
{
st->stack[--st->top]=stu;
return OK;
}
else return ERROR;
}

// 栈空
int StackEmpty(SqStack *st)
{
if(st->top==MAXSIZE)
return TRUE;
else return FALSE;
}

// 出栈
STU *pop(SqStack *st)
{

return &st->stack[st->top++];
}

// 逆置链表
void RevLinkList(LinkList head)
{
LinkList p=head;
SqStack *st=InitStack();

while(p)
{
push(st,p->data);
p=p->next;
}

p=head;
while(!StackEmpty(st))
{
p->data=*pop(st);
p=p->next;
}
}

int main(void)
{
int n;
LinkList head; // 表头

printf("输入学生个数: ");
scanf("%d",&n);
printf("请输入学生信息:\n");
head=CreateList(n);
printf("输入的学生信息如下:\n");
PrintList(head);

RevLinkList(head);
printf("逆置后学生信息:\n");
PrintList(head);

return 0;
}

稍微有些改动,对比看下。。。。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜