當前位置:首頁 » 服務存儲 » 如何建立鏈式存儲表
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

如何建立鏈式存儲表

發布時間: 2023-01-16 03:54:11

Ⅰ 編程實現線性表的鏈式存儲結構,即鏈表,實現鏈表的建立和輸出

程序代碼:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
struct node
{
int num;
char name[10],Class[15];
struct node *next;
}*head,*p,*q;
int main()
{
int i,num;
char name[10],Class[15];
head=(struct node*)malloc(sizeof(struct node));
memset(name,'\0',sizeof(name));
memset(Class,'\0',sizeof(Class));
printf("信息輸入:\n");
scanf("%d%s%s",&num,name,Class);
head->num=num;
strcpy(head->name,name);
strcpy(head->Class,Class);
head->next=NULL;
for(i=0;i<5;i++)
{
memset(name,'\0',sizeof(name));
memset(Class,'\0',sizeof(Class));
scanf("%d%s%s",&num,name,Class);
p=(struct node*)malloc(sizeof(struct node));
p->num=num;
strcpy(p->name,name);
strcpy(p->Class,Class);
p->next=head;
head=p; //不帶頭結點的頭插法
}
printf("信息輸出:\n");
p=head;
while(p)
{
if(p->num<10) printf("0");
printf("%d %s %s\n",p->num,p->name,p->Class);
p=p->next;
}

p=head;
while(p) //釋放空間
{
q=p;
p=p->next;
free(q);
}
return 0;
}
輸入:
01 張三 初二(1)班
02 李四 初二(1)班
03 王五 初二(1)班
04 錢六 初二(1)班
05 孫七 初二(1)班
06 趙八 初二(1)班
輸出:
06 趙八 初二(1)班
05 孫七 初二(1)班
04 錢六 初二(1)班
03 王五 初二(1)班
02 李四 初二(1)班
01 張三 初二(1)班

Ⅱ 線性表的鏈式存儲結構定義及基本操作

是這個效果嗎

Ⅲ 如何用C語言實現簡單的鏈式存儲結構

使用結構體:

typedefstructnode{
intdata;
structnode*next;
}Node;

就可以實現,以上是一個單鏈表的節點元素,每個節點的next指向下一個節點,就可以實現鏈式存儲了。遇到其他類似的問題,可以根據需要設置相應的指針域。

Ⅳ 建立一個鏈式存儲的線性表,並實現線性表的插入和刪除操作。

Status ListInsert_Sq(SqList &L, int i, ElemType e) {
//在順序表L中第i個位置之前插入新元素e
// i的合法值為1≦i≦ListLength_Sq(L)+1
if (i<1||i>L.length+1) return ERROR; //i值不合法
if (L.length>=L.listsize) { //當前空間已滿
newbase = (ElemType *)realloc(L.elem, (L.listsize+LISTINCREMENT)*sizeof(ElemType)) ;
if (!newbase) exit (OVERFLOW);
L.elem = newbase;
L.listsize=L.listsize+INCREMENT;
}
q=&(L.elem[i-1]);//q為插入位置
for (p=&(L.elem[L.length-1]), p>=q; --p)
*(p+1)=*p; //插入位置及之後的元素右移
*q=e; //插入元素
L.length++; //表長增1
return OK;
}//ListInsert_Sq

Ⅳ 建立一個鏈式存儲結構的線性表

#include<stdio.h>
#include<stdlib.h>

//**************以下為鏈表的節點定義**********************

typedef struct node *list_pointer;

typedef struct node{
int data;
struct node *link;
}list_node;
list_pointer init( );
void create( );
void display( );
void add( );
void delete( );
int main( ) {
list_pointer ptr = NULL;
ptr = init( );
create(ptr);
display(ptr);
add(ptr);
display(ptr);
delete(ptr);
display(ptr);
}

//***********************以下為鏈表的初始化*********************
list_pointer init( )
{
list_pointer s;
s = (list_pointer) malloc (sizeof (list_node) );
printf("初始化鏈表\n");
if (s)
{
s->link = NULL;
return s;
}else
{ printf("空間不足");
return NULL;
}
}
//***********************以下為建表************************
void create(list_pointer ptr)
{
int i,n;
char tmp ;
list_pointer p;
printf ("請輸入表的元素個數\n");
scanf ("%d", &n);
for (i = 0; i < n; i++)
{
printf("請輸入第%d個元素\n",i+1);
fflush(stdin);
scanf("%d",&tmp);
p = (list_node *)malloc (sizeof (list_node) );
p->data = tmp;
p->link = (ptr)->link;
(ptr)->link = p;
}

}

//***********************展示元素***********************
void display (list_pointer ptr)
{
list_pointer pp;
pp = ptr->link;
printf("順序表的結點分別是:\n");
while(pp) {
printf("%d\t",pp->data);
pp = pp->link;
}
}

//********************插入元素************************
void add(list_pointer ptr)
{
int n;
list_pointer p;
printf("請輸入需要插入的結點:\n");
scanf("%d",&n);
p = (list_pointer) malloc (sizeof (list_node) );
p->data = n;
p->link = ptr->link;
ptr->link = p;
}

//*********************以下為刪除元素*******************
void delete(list_pointer ptr)
{
int i = 0,n;
list_pointer first,second;
do
{
printf("請輸入要刪除元素的位置:\n");
scanf("%d",&n);
}while(n < 0);
second = ptr;
while (i<n && second)
{
i++;
second = second->link;
first = second ->link;
printf("this is OK\n");
}
if (i < n)
{
printf("表中不存在此元素\n");
}else
{
printf("this is Ok\n");
second->link = first->link;
printf("this is OK\n");
free(first);
}
}
我寫的跟你要求的基本一致,名字改一下就可以了。