怎么求线性表的长度,我需要一个线性表的定义,赋值,然后求线性表的长度。
答案:2 悬赏:0 手机版
解决时间 2021-02-14 10:32
- 提问者网友:欲望失宠
- 2021-02-13 20:41
这是我的数据结构作业,我明天要交作业了。求求高手们。
最佳答案
- 五星知识达人网友:患得患失的劫
- 2021-02-13 21:29
#include
#include
struct TLink {
int data;
struct TLink * next;
};
struct TLink * new_item(int number)
{
struct TLink * r = 0;
r = (struct TLink *)malloc(sizeof(struct TLink));
r->data = number;
r->next = 0;
return r;
}
struct TLink * lookup(struct TLink * root, int number)
{
struct TLink * h = root;
while(h) {
if (h->data == number) return h;
h = h->next ;
}
return 0;
}
void append(struct TLink * * root, int number)
{
struct TLink * r = 0, * n = 0;
if (!root) return ;
if (lookup(*root, number)) return;
r = *root;
if (!r) {
*root = new_item(number);
return ;
}
if (number < r->data ) {
n = new_item(number);
n->next = r;
*root = n;
return ;
}
while(r) {
n = r->next ;
if (!n) {
n = new_item(number);
r->next = n;
return ;
}
if (number < n->data ) {
r->next = new_item(number);
r->next->next = n;
return ;
}
r = n;
}
}
void print(struct TLink * root)
{
int total = 0;
struct TLink * r = root;
printf("【");
while(r) {
printf("%d ", r->data );
r = r->next ;
total ++;
}
printf("\b】\n");
printf("线性表总长度 = %d\n", total);
}
int main(void)
{
int i = 0; struct TLink * x=0;
int a[] = {8,4,3,9,5,1};
printf("原数据为:\n数组【");
for(i = 0; i < 6; i++) {
printf("%d ", a[i]);
append(&x, a[i]);
}
printf("\b】\n转换为有序线性表\n:");
print(x);
return 0;
}
#include
struct TLink {
int data;
struct TLink * next;
};
struct TLink * new_item(int number)
{
struct TLink * r = 0;
r = (struct TLink *)malloc(sizeof(struct TLink));
r->data = number;
r->next = 0;
return r;
}
struct TLink * lookup(struct TLink * root, int number)
{
struct TLink * h = root;
while(h) {
if (h->data == number) return h;
h = h->next ;
}
return 0;
}
void append(struct TLink * * root, int number)
{
struct TLink * r = 0, * n = 0;
if (!root) return ;
if (lookup(*root, number)) return;
r = *root;
if (!r) {
*root = new_item(number);
return ;
}
if (number < r->data ) {
n = new_item(number);
n->next = r;
*root = n;
return ;
}
while(r) {
n = r->next ;
if (!n) {
n = new_item(number);
r->next = n;
return ;
}
if (number < n->data ) {
r->next = new_item(number);
r->next->next = n;
return ;
}
r = n;
}
}
void print(struct TLink * root)
{
int total = 0;
struct TLink * r = root;
printf("【");
while(r) {
printf("%d ", r->data );
r = r->next ;
total ++;
}
printf("\b】\n");
printf("线性表总长度 = %d\n", total);
}
int main(void)
{
int i = 0; struct TLink * x=0;
int a[] = {8,4,3,9,5,1};
printf("原数据为:\n数组【");
for(i = 0; i < 6; i++) {
printf("%d ", a[i]);
append(&x, a[i]);
}
printf("\b】\n转换为有序线性表\n:");
print(x);
return 0;
}
全部回答
- 1楼网友:纵马山川剑自提
- 2021-02-13 21:46
给成员赋值
typedef struct node
{
char data;
struct node *next;
}node,*linklist;
linklist createfromtail(void)
{
linklist h;
node *node,*tail;
char c;
int flag=1;
h=(linklist)malloc(len);
h->next=null;
tail=h;
while(flag)
{
c=getchar();
if(c!='#')
{
node=(node *)malloc(len);
node->data=c; // 这里
tail->next=node;
tail=node;
}
else
{
flag=0;
tail->next=null;
}
}
c=getchar();
return(h);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯